.NET Framework 不支援字元集「utf8mb3」:System.NotSupportedException
P粉063039990
P粉063039990 2023-10-19 17:44:27
0
2
753

我正在嘗試運行帶有 MySQL 資料庫的伺服器,但是我不斷收到這個巨大的錯誤,我不知道為什麼。

[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

全部回覆(2)
P粉647449444

可用來 MySQL 連接器的更新/NET

更新到版本 8.0.28 後(NuGet 套件 MySql.Data)一切都恢復正常了。

P粉683665106

就我而言,我安裝了預設帶有 utf8mb310.6.4-MariaDB

我在嘗試讀取表格時遇到了同樣的錯誤。

我透過將 MariaDB 配置中的所有字元集設定更改為 utf8mb4 修復了該問題。

然後轉儲我的資料庫並再次導入它。這次在建立資料庫時指定 utf8mb4

因此,正常的 SELECTUPDATE 查詢工作正常,不再發生錯誤。

但是當我的應用程式呼叫預存程序時,我不斷收到錯誤。

我認為這可能是因為預存程序保存到information_schema 資料庫中,它仍然是utf8mb3 並且我找不到將其更改為 的方法>utf8mb4.

在花費了大量時間嘗試實作一些奇怪的解決方法之後,我遇到了這個錯誤報告:

無法從 C# 用戶端應用程式使用 MariaDB 10.6
https://jira.mariadb.org/browse/MDEV-26105?attachmentViewMode=列表

#那裡的一位用戶說:

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

所以我最終在執行預存程序之前將其添加到我的 VB 專案中:

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

這為我解決了錯誤。

此外,這是我之前在 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'
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!