Rumah  >  Soal Jawab  >  teks badan

.NET Framework tidak menyokong set aksara 'utf8mb3': System.NotSupportedException

Saya cuba menjalankan pelayan dengan pangkalan data MySQL, tetapi saya terus mendapat ralat besar ini dan saya tidak tahu mengapa.

[21:15:49,107] Server Properties Lookup: Error While Initialization
DOL.Database.DatabaseException: Table DOL.Database.ServerProperty is not registered for Database Connection...
   at DOL.Database.ObjectDatabase.SelectAllObjects[TObject]()
   at DOL.GS.ServerProperties.Properties.get_AllDomainProperties()
   at DOL.GS.ServerProperties.Properties.InitProperties()
   at DOL.GS.GameServer.InitComponent(Action componentInitMethod, String text)```

also this error

[21:15:35,991] ExecuteSelectImpl: UnHandled Exception for Select Query "DESCRIBE `Specialization`"
System.NotSupportedException: Character set 'utf8mb3' is not supported by .Net Framework.
   at MySql.Data.MySqlClient.CharSetMap.GetCharacterSet(DBVersion version, String charSetName)
   at MySql.Data.MySqlClient.MySqlField.SetFieldEncoding()
   at MySql.Data.MySqlClient.NativeDriver.GetColumnData(MySqlField field)
   at MySql.Data.MySqlClient.NativeDriver.GetColumnsData(MySqlField[] columns)
   at MySql.Data.MySqlClient.Driver.GetColumns(Int32 count)
   at MySql.Data.MySqlClient.ResultSet.LoadColumns(Int32 numCols)
   at MySql.Data.MySqlClient.ResultSet..ctor(Driver d, Int32 statementId, Int32 numCols)
   at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)
   at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
   at MySql.Data.MySqlClient.MySqlDataReader.Close()
   at MySql.Data.MySqlClient.MySqlCommand.ResetReader()
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior)
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.ExecuteReader()
   at DOL.Database.SQLObjectDatabase.ExecuteSelectImpl(String SQLCommand, IEnumerable`1 parameters, Action`1 Reader)```


P粉063039990P粉063039990366 hari yang lalu850

membalas semua(2)saya akan balas

  • P粉647449444

    P粉6474494442023-10-20 17:11:15

    Terdapatkemas kini/NET tersedia untuk penyambung MySQL.

    Selepas mengemas kini kepada versi 8.0.28 (pakej NuGet MySql.Data) semuanya kembali normal.

    balas
    0
  • P粉683665106

    P粉6836651062023-10-20 12:08:27

    Dalam kes saya, saya memasang yang lalai dengan utf8mb310.6.4-MariaDB.

    Saya mendapat ralat yang sama semasa cuba membaca jadual.

    Saya membetulkan isu dengan menukar semua tetapan set aksara dalam konfigurasi MariaDB kepada utf8mb4.

    Kemudian membuang pangkalan data saya dan mengimportnya semula. Kali ini nyatakan utf8mb4 semasa membuat pangkalan data.

    Jadi, pertanyaan SELECTUPDATE biasa berfungsi dengan baik dan tiada lagi ralat berlaku.

    Tetapi apabila aplikasi saya memanggil prosedur tersimpan, saya terus mendapat ralat.

    Saya rasa mungkin kerana prosedur tersimpan disimpan ke information_schema 数据库中,它仍然是 utf8mb3 并且我找不到将其更改为 的方法>utf8mb4.

    Selepas menghabiskan banyak masa cuba melaksanakan beberapa penyelesaian pelik, saya menemui laporan pepijat ini:

    Tidak dapat menggunakan MariaDB 10.6 daripada aplikasi klien C#:
    https://jira.mariadb.org/browse/MDEV-26105?attachmentViewMode=List

    Seorang pengguna di sana berkata:

    MySqlCommand setcmd = new MySqlCommand("SET character_set_results=utf8", conn);
    int n = setcmd.ExecuteNonQuery();
    setcmd.Dispose();

    Jadi saya akhirnya menambah ini pada projek VB saya sebelum melaksanakan prosedur tersimpan:

    Dim sqlCommand As New MySqlCommand
    sqlCommand.Connection = _MySqlCn
    sqlCommand.CommandText = "SET character_set_results=utf8"
    sqlCommand.ExecuteNonQuery()

    Ini menyelesaikan ralat untuk saya.

    Selain itu, inilah yang saya ubah sebelum ini dalam konfigurasi pelayan MariaDB:

    [client]
    default-character-set=utf8mb4
    
    [mysql]
    default-character-set=utf8mb4
    
    # this is read by the standalone daemon and embedded servers
    [server]
    
    # this is only for the mysqld standalone daemon
    [mysqld]
    
    old_mode=
    character-set-server = utf8mb4
    character-set-client=utf8mb4
    collation-server = utf8mb4_unicode_520_ci
    init-connect='SET NAMES utf8mb4'

    balas
    0
  • Batalbalas