Estoy tratando de ejecutar un servidor con una base de datos MySQL, sin embargo, sigo recibiendo este gran error y no estoy seguro de por qué.
[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)```Tal vez una solución. Fuente: https://dba.stackexchange.com/questions/8239/how-to-easily-convert-utf8-tables-to-utf8mb4-in-mysql-5-5
Cambie su CONJUNTO DE CARACTERES Y COLLATE a utf8mb4.
Para cada base de datos:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;Para cada mesa:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Para cada columna:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;Trabajó para mí con Powershell y MariaDB 10.6. Espero que esto ayude ;)
En mi caso tenía instalado 10.6.4-MariaDB que venía por defecto con utf8mb3 .
Recibí el mismo error al intentar leer tablas.
Lo arreglé cambiando todas las configuraciones del juego de caracteres en la configuración de MariaDB a utf8mb4 .
Luego volcar mi base de datos e importarla nuevamente. Esta vez especificando utf8mb4 al crear la base de datos.
Entonces, las consultas normales SELECT , UPDATE funcionaban bien, no más errores.
Pero seguí recibiendo un error cuando mi aplicación estaba llamando a procedimientos almacenados.
Creo que tal vez eso se debió a que los procedimientos almacenados se guardan en la base de datos information_schema , que todavía era utf8mb3 y no pude encontrar una manera de cambiarlo a utf8mb4 .
Después de perder mucho tiempo tratando de implementar algunas soluciones extrañas, me encontré con este informe de error:
MariaDB 10.6 no se puede usar desde aplicaciones cliente C# :
https://jira.mariadb.org/browse/MDEV-26105?attachmentViewMode=list
Uno de los usuarios allí dice:
MariaDB utiliza el juego de caracteres del sistema solo internamente y no es necesario cambiarlo. En mi programa cliente escrito en C#, esto es lo que hice después de conectarme para que funcione con MariaDB 10.6:
MySqlCommand setcmd = new MySqlCommand("SET character_set_results=utf8", conn); int n = setcmd.ExecuteNonQuery(); setcmd.Dispose();en este comando, utf8 fue predeterminado a utf8mb4 por MariaDB debido a la configuración de old_mode. Ese es el conjunto de caracteres de resultados que estaba causando problemas con mi programa.
Así que terminé agregando esto en mi proyecto de VB justo antes de ejecutar mis procedimientos almacenados:
Dim sqlCommand As New MySqlCommand sqlCommand.Connection = _MySqlCn sqlCommand.CommandText = "SET character_set_results=utf8" sqlCommand.ExecuteNonQuery()Esto solucionó el error para mí.
Además, esto es lo que había cambiado previamente en la configuración del servidor 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'En mi caso (MariaDB 10.6) ayudó a cambiar character-set-server en ...\MariaDB 10.6\data\my.ini de utf8 a utf8mb4 . Ahora todo funciona bien.
Hay una actualización disponible para MySQL Connector/NET .
Después de actualizar a la versión 8.0.28 (paquete MySql.Data ), todo vuelve a funcionar.