Rumah > Soal Jawab > teks badan
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粉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.
P粉6836651062023-10-20 12:08:27
Dalam kes saya, saya memasang yang lalai dengan utf8mb3
的 10.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 SELECT
、UPDATE
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'