C# · 12月 23, 2021

c# – MySql的异常:变量’character_set_client’不能设置为’utf16’的值

以前我使用sql server 2005作为我的网站数据库,一切运作良好.
现在我已经改为 MySql server 5.5数据库,因为它是开源的.

我使用Navicat Premium将我的数据从sql server传输到MysqL.我使用MysqL workbench和navicat来管理我的数据库.当我声明与MysqL数据库的连接时出现问题.这是我的代码:

MysqLCommand cmdselect; MysqLConnection conNDB; MysqLDataReader Mydtr; string server = “localhost”; string database = “maindb”; string uid = “root”; string password = “abc123”; string strCon = “SERVER=” + server + “;” + “DATABASE=” + database + “;” + “UID=” + uid + “;” + “PASSWORD=” + password + “;”; string strSelect = “SELECT * FROM announcement”; conNDB = new MysqLConnection(strCon); conNDB.open(); cmdselect = new MysqLCommand(strSelect,conNDB); Mydtr = cmdselect.ExecuteReader(); rptAnnounce.DataSource = Mydtr; rptAnnounce.DataBind(); Mydtr.Close(); conNDB.Close();

已经设置了对MysqL.Data的引用.在这里我收到此错误消息:

Exception Details:
MysqL.Data.MysqLClient.MysqLException:
Variable ‘character_set_client’ can’t
be set to the value of ‘utf16’
Error message stated this error occurs during connection.open();

当我继续刷新错误页面时,我有时会收到另一个错误.就这个:

Exception Details: MysqL.Data.MysqLClient.MysqLException: Expected end of data packet
Error message stated this error occurs during Mydtr = cmdselect.ExecuteReader();

我是MysqL的新手.我不知道这是什么问题.我想这个问题来自数据库的设置或数据,而不是我的源代码.

有谁知道解决方案?非常感谢您的帮助.我一直在尝试4天但无法解决.

解决方法 解决了!!感谢@Etienne Rached和@jeremi

所有问题都来自字符集问题.

解决方案:下载navicat,更改数据库和每个表的字符集.

您需要检查2个地方:

1)右键单击数据库,例如. MYDB.然后选择属性并设置字符集

2)右键单击表并选择设计表.单击每一行以更改字符集,最后转到“选项”选项卡并更改字符集.

对于您的信息:这是非常罕见的情况.我google它几乎找不到解决方案.我在安装MysqL时创建了这个错误,我选择了utf16格式>< 顺便说一下,简单的连接字符串将起作用.喜欢

“server=localhost;database=maindb;uid=root;pwd=abc123;CharSet=utf8; port=3306”;