我正在尝试运行一个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)```
6条答案
按热度按时间qmb5sa221#
MySQL连接器/NET有可用的更新。
更新到版本8.0.28(NuGet包
MySql.Data
)后,一切都恢复正常。pw9qyyiw2#
在我的例子中,我安装了
10.6.4-MariaDB
,默认情况下是utf8mb3
附带的。当我试图读表时,我得到了同样的错误。
我已经通过将MariaDB配置中的所有字符集设置更改为
utf8mb4
来修复它。然后转储我的数据库并再次导入它。这次在创建数据库时指定
utf8mb4
。因此,正常的
SELECT
、UPDATE
查询工作正常,没有更多错误。但是当我的应用程序调用存储过程时,我总是收到错误。
我想这可能是因为存储过程保存在
information_schema
数据库中,它仍然是utf8mb3
,我找不到将其更改为utf8mb4
的方法。在浪费了大量时间尝试实现一些奇怪的变通方法之后,我遇到了这个bug报告:
MariaDB 10.6无法从C#客户端应用程序使用:
https://jira.mariadb.org/browse/MDEV-26105?attachmentViewMode=list
其中一个用户说:
系统字符集只在MariaDB内部使用,不需要更改。在我用C#编写的客户端程序中,连接后我做了以下操作,使其与MariaDB 10.6兼容:
在这个命令中,由于old_mode设置,utf8被MariaDB默认为utf8mb4。这是导致我的程序出现问题的结果字符集。
所以我在执行存储过程之前,在VB项目中添加了以下代码:
这为我修复了错误。
此外,这是我以前在MariaDB服务器配置中更改的内容:
41zrol4v3#
也许是一个解决方案。来源:https://dba.stackexchange.com/questions/8239/how-to-easily-convert-utf8-tables-to-utf8mb4-in-mysql-5-5
将"字符集和校对“更改为utf8 mb 4。
对于每个数据库:
对于每个表:
对于各色谱柱:
为我工作的Powershell和MariaDB 10. 6。希望这会有帮助;)
pvcm50d14#
在我的例子中,(MariaDB 10.6) 帮助将...\MariaDB 10.6\data\my.ini中的
character-set-server
从utf8更改为utf8mb4。y1aodyip5#
对于.NET CORE 5.0,我必须将3个NuGet包从v.5.0.0升级到v.5.0.13:
ndh0cuux6#
我放弃了Oracle的MySQL Connector/Net,重新编写应用程序以使用MySqlConnector,从而“解决”了这个问题。虽然工作量很小,但由于用户管理依赖于MySql.Web,因此我还必须重新编写有关用户管理的所有内容,而这并不容易。