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

前端之家收集整理的这篇文章主要介绍了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";

猜你在找的C#相关文章