最近在小组内接到一个任务, 让我把mysql数据库从Windows上迁移到ubuntu上. 安装过程没有问题, 可是在使用时发现, 使用Workbench等专业客户端登录时正常, 可是执行我们小组的C#代码发现含有中文的SQL语句乱码了. 由于我们的C#代码之前运行是没有问题的, 所以我以为代码是正确的, 一定是我Mysql的配置问题, 所以走了一些弯路.
1\ 为了寻找问题的所在, 我首先打开了Mysql的 general-log:
编辑 /etc/mysql/my.cnf, 将下面两行的注释去掉.
general_log_file = /var/log/mysql/mysql.log
general_log = 1
2\ 查看 /var/log/mysql/mysql.log, 发现C#的查询传到mysql时已经是乱码了,这时我才意识到是代码的问题
3\ 在C#的连接数据库的语句后面加上Charset=utf8, 即
"server=192.168.1.26;uid=unity;pwd=123;database=test;Charset=utf8"
4\ 问题解决, 但要注意, 此时在C#中查询直接查就可以, 千万不要再次 进行 set names utf8, 运行了set names utf8之后就又乱码了