搜尋

首頁  >  問答  >  主體

.NET Framework 不支援字元集「utf8mb3」:System.NotSupportedException

我正在嘗試運行帶有 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粉063039990P粉063039990474 天前1235

全部回覆(2)我來回復

  • P粉647449444

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

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

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

    回覆
    0
  • P粉683665106

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

    就我而言,我安裝了預設帶有 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'

    回覆
    0
  • 取消回覆