首页  >  问答  >  正文

.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粉063039990366 天前851

全部回复(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
  • 取消回复