Maison > Questions et réponses > le corps du texte
J'essaie d'exécuter un serveur avec une base de données MySQL, mais je continue à recevoir cette énorme erreur et je ne sais pas pourquoi.
[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粉6474494442023-10-20 17:11:15
Il existemises à jour/NET disponibles pour le connecteur MySQL.
Après la mise à jour vers la version 8.0.28 (package NuGet MySql.Data
) tout est revenu à la normale.
P粉6836651062023-10-20 12:08:27
Dans mon cas, j'ai installé celui par défaut avec utf8mb3
的 10.6.4-MariaDB
.
J'ai eu la même erreur en essayant de lire le tableau.
J'ai résolu le problème en modifiant tous les paramètres de jeu de caractères dans la configuration MariaDB en utf8mb4
.
Puis j'ai vidé ma base de données et je l'ai réimportée. Cette fois-ci précisez utf8mb4
lors de la création de la base de données.
Ainsi, les requêtes SELECT
、UPDATE
normales fonctionnent correctement et plus aucune erreur ne se produit.
Mais lorsque mon application appelle la procédure stockée, je continue de recevoir des erreurs.
Je pense que cela pourrait être dû au fait que la procédure stockée est enregistrée dans information_schema
数据库中,它仍然是 utf8mb3
并且我找不到将其更改为 的方法>utf8mb4
.
Après avoir passé beaucoup de temps à essayer de mettre en œuvre des solutions de contournement étranges, je suis tombé sur ce rapport de bug :
Impossible d'utiliser MariaDB 10.6 à partir de l'application client C# :
https://jira.mariadb.org/browse/MDEV-26105?attachmentViewMode=List
Un utilisateur a dit :
MySqlCommand setcmd = new MySqlCommand("SET character_set_results=utf8", conn); int n = setcmd.ExecuteNonQuery(); setcmd.Dispose();
J'ai donc fini par ajouter ceci à mon projet VB avant d'exécuter la procédure stockée :
Dim sqlCommand As New MySqlCommand sqlCommand.Connection = _MySqlCn sqlCommand.CommandText = "SET character_set_results=utf8" sqlCommand.ExecuteNonQuery()
Cela a résolu l'erreur pour moi.
C'est aussi ce que j'ai modifié précédemment dans la configuration du serveur 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'