如何修改MySQL字符集

上周试过改 my.ini。

default-character-set=utf8
character_set_server=utf8
改完重启服务。

service mysql restart
然后看变量。

SHOW VARIABLES LIKE 'character%';
确实看到都是 utf8 了。

不过我那个朋友说。
用命令也行。

比如。

ALTER DATABASE your_database_name CHARACTER SET utf8 COLLATE utf8 _general_ci;
这样也能改。

算了。
你看着办。

如何修改mysql数据库编码格式?

前两天帮朋友调试网站,他那MySQL数据库存的文章标题都是一串乱码,像是“й”这么个玩意儿。
我这心里就咯噔一下,知道是编码问题。

得先登录数据库看看。
他在Windows系统上,我就让他按【win】+【R】键,输入“cmd”打开命令提示符。
然后输入“mysql -u root -p”,让他回车后输入密码——他设置的密码是“1 2 3 4 5 6 ”,哈哈,这密码太随意了点。
登录进去,看到那个数据库名叫“website2 02 3 ”。

用“use website2 02 3 ”切换到这个库。
然后“show variables like 'character%';”命令查了下,发现当前字符集是“latin1 ”。
这我就懂了,存中文的时候肯定出问题。

改编码是关键步骤。
“alter database website2 02 3 character set utf8 ;”输入完回车,MySQL就处理着去了,进度条似的。
等它改完,再用“show variables like 'character%';”确认,这次显示“character_set_database”: “utf8 ”,没问题了。

不过等等,我突然想到,他网站后台是用PHP开发的,修改数据库编码后,PHP连接数据库的配置文件也要改。
他的配置文件在“\xampp/phpMyAdmin\config.inc.php”,得把里面的“$cfg['Servers'][$i]['connection']['charset']”改成“utf8 ”。
改完后重启Apache,再看看页面,标题显示“苹果”了,这下舒坦。

不过有个疑问,如果改编码时没备份数据,万一原数据损坏了咋办?我以前见过一次,一个朋友的库改成utf8 后,部分存了ansi编码的数据变成乱码,最后只能逐条手动修正回来。
这个风险得特别留意。

Mysql Incorrect string value问题解决

这事儿我碰到过好几次了,用Ubuntu的时候,MySQL插入中文数据出问题,报错也是五花八门。
说起来,我印象中最深刻的一次是去年年底在杭州一个项目中遇到的。
那时候,我们团队用Ubuntu系统,突然间插入中文就变成了这个错误:"Incorrect string value: '' for column 'type_name' at row 1 "。
一看这个,就知道是字符集配置出了问题。

先说第一步,解决这个问题的第一步是要改MySQL的配置文件。
你得打开那个配置文件,路径一般是 "/etc/mysql/my.cnf" 或者 "/etc/my.cnf"。
找到里面的一行 "character-set-server",然后把它的值从 "utf8 " 改成 "utf8 mb4 "。
我记得我当时改的时候还特意把那一行内容改成了 "character-set-server=utf8 mb4 ",就为了保险。

改完配置文件之后,别忘了重启MySQL服务,这样配置才能生效。
终端里输入命令 "sudo systemctl restart mysql" 或者 "sudo service mysql restart",这个我之前搞过好几次了,挺熟的。

然后第三步,你还得修改数据库的字符集。
这得在MySQL命令行里操作,先输入 "SET NAMES 'utf8 mb4 '" 设置当前会话的字符集。
之后,对那个要改的数据库用 "ALTER DATABASE 数据库名 CHARACTER SET utf8 mb4 COLLATE utf8 mb4 _unicode_ci" 命令来修改。
记得改完之后,用 "FLUSH PRIVILEGES" 命令更新权限缓存。

说实话,这个过程有点繁琐,当时我都没想明白为什么这么复杂。
后来有一次,遇到个更简单的法子。
在MySQL命令行里,你输入 "SET storage_engine=INNODB",这样一搞,数据库就用上InnoDB存储引擎了。
然后再试一次插入中文,问题往往就解决了。

就这么回事儿,用Ubuntu的时候遇到这种问题,记住这几个步骤就能解决。
虽然繁琐了点,但总比看着数据出问题强啊。

MySql的问题...郁闷

改my.ini字符集为utf8 ,重启MySQL,.NET操作MySQL中文乱码问题解决。
直接用,别绕弯子。

写入数据库和读出时,用alice写的函数转换编码,简单。

MySQL不支持中文查询?加binary属性或用locate函数,看文档。

MySQL ODBC和.NET驱动中文异常?检查驱动和编码设置,测试代码里找问题。

先这样,有问题再问。