.NET Framework tidak menyokong set aksara 'utf8mb3': System.NotSupportedException
P粉063039990
P粉063039990 2023-10-19 17:44:27
0
2
1204

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粉063039990
P粉063039990

membalas semua(2)
P粉647449444

Terdapatkemas kini/NET tersedia untuk penyambung MySQL.

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

P粉683665106

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'
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan