.NET Framework ne prend pas en charge le jeu de caractères « utf8mb3 » : System.NotSupportedException
P粉063039990
P粉063039990 2023-10-19 17:44:27
0
2
966

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粉063039990
P粉063039990

répondre à tous(2)
P粉647449444

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粉683665106

Dans mon cas, j'ai installé celui par défaut avec utf8mb310.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 SELECTUPDATE 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'
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal