【发布时间】:2011-09-18 04:03:57
【问题描述】:
以前我使用 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 的引用。在这里我收到了这个错误信息:
异常详情: MySql.Data.MySqlClient.MySqlException: 变量“character_set_client”不能 设置为“utf16”的值 错误消息指出此错误发生在连接期间。Open();
当我不断刷新错误页面时,有时会出现另一个错误。就是这样:
异常详细信息:MySql.Data.MySqlClient.MySqlException:预期数据包结束 错误消息指出此错误发生在 Mydtr = cmdselect.ExecuteReader();
我是 mysql 的新手。我不知道这是什么问题。我猜这个问题来自数据库的设置或数据,而不是我的源代码。
有人知道解决办法吗?非常感谢您的帮助。我已经尝试了 4 天,但无法解决。
【问题讨论】:
-
能否请您检查并告诉我们您的数据库中的 character_set_client 变量值是什么,您可以使用 mysql 查询来查看它:SHOW VARIABLES LIKE "character%"
-
嗨 Etienne Rached,我已经检查过 ^^ 它们都在 utf8 中。我已经在您的教程中发布了您的回复^^。这是链接:codeproject.com/Messages/3932728/Re-i-got-some-bugs.aspx
-
我遇到了类似的问题,我的字符集是 latin1,在过去是默认的。我在有问题的查询中的表和列上更改为 utf8,问题就消失了。不知道为什么 latin1 会导致问题,除了可能有些表是 utf8 而其他表是 latin1 并且它不喜欢混合