Ubuntu解决mysql录入中文报错 Incorrect string value: for column type at row 1

2 点半的时候我刚好解决了一个数据库的问题,现在就来跟你们说说怎么搞定的。
那天我用的是jdk8 ,配的是mysql5 .7 ,结果出了点小状况。

先说一个小错误,就是遇到了“Columncountdoesn‘tmatchvaluecountatrow1 ”的问题。
这玩意儿的意思就是列名跟提供的值数量不匹配。
举个例子,我写了个插入语句,“insertintouser(colum1 ,colum2 ,colum3 )values(字段1 ,字段2 )”,结果就出了这个问题,因为列名和值的数量不一样。

再来说个大问题,就是项目环境搭好了,但是往MySQL里录入中文数据的时候出问题了。
错误信息是“Incorrectstringvalue:forcolumn‘name’atrow1 ”,就是说数据库不认中文字符。
原因啊,就是MySQL的字符集设置不对,不支持中文编码。

我那时候也是一头雾水,后来查了查资料,发现得改字符集。
首先,得检查默认字符集,原来MySQL用的字符集是latin1 (ISO_8 8 5 9 _1 ),这玩意儿不支持中文。
然后,我就调整了配置文件或者用命令行改了字符集,让它支持中文编码。
最后,重启MySQL服务,命令是“servicemysqlrestart”。

就这样,系统终于能录入中文数据了,问题解决了。
当时真挺感谢那些在nowamagic.net/librarys/...上给我提供帮助的网友啊。

MySQL无法存储中文字符解决方案介绍mysql不能存中文吗

嘿,你问MySQL不能存中文字符是吧?这事儿我遇到过,挺烦人的。
咱们直接说解决方案,别绕弯子。

上周有个客人问我,他那个系统存中文乱码,一查果然是MySQL字符集没搞对。
你想想,MySQL默认可能是latin1 或者其他啥,那肯定不支持中文啊。
你存个"张三"进去,出来的可能是乱码块,这就很离谱。

解决方案其实就几步,我按顺序给你捋捋:
1 . 创建表的时候指定字符集 这是最常用的方法。
别等出错了才后悔,一开始就设置对。
你看看这个命令: sql CREATE TABLE users ( id INT(1 1 ) NOT NULL AUTO_INCREMENT, name VARCHAR(2 5 5 ) COLLATE utf8 mb4 _unicode_ci NOT NULL, age INT(1 1 ) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 mb4 COLLATE=utf8 mb4 _unicode_ci; 这里的DEFAULT CHARSET=utf8 mb4 和COLLATE=utf8 mb4 _unicode_ci就是关键。
utf8 mb4 支持更多字符,包括Emoji,比单纯的utf8 更保险。
你用这个创建表,存中文就不会乱码了。

2 . 改MySQL默认字符集 要是嫌每次创建表都写DEFAULT CHARSET=utf8 mb4 太麻烦,你可以把MySQL整站默认字符集改掉。
这个得改配置文件,一般是my.cnf或者my.ini,具体看你系统是Linux还是Windows。
在[mysqld]下面加这几行: ini [mysqld] default-character-set=utf8 mb4 character-set-server=utf8 mb4 collation-server=utf8 mb4 _unicode_ci init-connect='SET NAMES utf8 mb4 ' 加完之后,一定记得重启MySQL服务,不然不生效。
这个搞定了,你后面正常连接数据库,默认字符集就是utf8 mb4 了,省事。

3 . 改已有的表和字段字符集 要是已经有的表字段出了问题,或者你用老版本MySQL建的表,字符集不对,咋办?用ALTER TABLE命令改。
比如把一个叫users的表整个改成utf8 mb4 : sql ALTER TABLE users CONVERT TO CHARACTER SET utf8 mb4 COLLATE utf8 mb4 _unicode_ci; 注意: 改表之前,最好确认表里没存重要的中文数据,或者备份一下。
有时候改表会出"非法字符集混合"的错误,通常是因为字段里有中文但还没转完。
这时候你可能得分步改,或者先清空数据再改。

单独改某个字段也行,比如只改name字段: sql ALTER TABLE users MODIFY name VARCHAR(2 5 5 ) CHARACTER SET utf8 mb4 COLLATE utf8 mb4 _unicode_ci;
总结一下关键点:
核心是字符集:必须用utf8 mb4 ,它支持几乎所有中文和特殊符号。
位置很重要:创建表时在CREATE TABLE后面加DEFAULT CHARSET=utf8 mb4 ,改已有表用ALTER TABLE。
别忘了重启:改了配置文件,服务必须重启。
备份是好习惯:改表前最好备份,尤其是数据多的表。

这招应该能解决你9 9 %的中文字符存储问题。
要是试了还是不行,你告诉我具体报什么错,我再帮你看看。
反正你先按这个试试看。

Excel数据导入Mysql常见问题汇总:如何解决字段类型不匹配的问题?

这就是坑:直接导入前不检查数据类型。

别信:Excel日期导入Mysql会默认为字符串。

别这么干:不先设置单元格格式再导入。

实操提醒:导入前必做数据类型转换和格式检查。