MySQL charset=UTF-8 和 ConnectionReset=True 不起作用

Man*_*n T 1 c# mysql entity-framework utf-8 character-encoding

我有一个如下所示的连接字符串

“服务器=本地主机;Uid=root;Pwd='abcd';数据库=testdb;字符集=utf8;ConnectionReset=True;”

任何带有 unicode 字符的数据库表列的插入都会作为特殊字符插入。如果我删除“ConnectionReset=True;”,一切都会正常工作 从我的连接字符串。知道这是怎么回事吗?

注意:我相信我的代码没问题,因为当我ConnectionReset=True;从连接字符串中删除部分时,插入 unicode 没问题。

Bra*_*ger 5

您遇到MySQL Bug #85185:“ConnectionReset 池选项不保留 CharSet 选项值”。

使用ConnectionReset=true;是个好主意。但是,这会产生将连接字符集重置为服务器默认值的副作用,这不是您想要的。我可以想到两种解决方法:

  1. 使用MySqlConnector,它是一个替代 ADO.NET MySQL 连接器库,可以修复此(以及许多其他)Connector/NET 错误
  2. connection.ExecuteNonQuery("SET NAMES utf8mb4");每次调用后执行connection.Open()。这将在连接从池返回时重置连接后修复连接字符集。

最后,MySQLutf8字符集实际上并不是UTF-8,因此使用utf8mb4.