使用navicat直接插入数据,出现ERROR 1366。
出现的原因:在编写数据库表的时候,没有指定字符集,默认字符集为latin1,此时通过插入语句插入中文会报错。
解决方式:
直接运行以下的代码,将database和server的字符集改成utf8:
show variables like '%char%';
set character_set_server=utf8;
set character_set_database=utf8;
依然没有解决问题的话,查看表的具体字段的字符集,可以通过查看创建语句查看:
show create table 表名;
也可以用以下代码去查看每个字段的全部信息:
show full columns from 表名;
检查数据库此字段的字符集与整理字符集是否与SQL语句传递数据的字符集相同;不相同则会引发MySQL1366错误。
如果字段的character是latin1的话,将其改为utf8即可。
具体代码如下:
alter table 表名 modify `字段名` varchar(255) CHARACTER set utf8 collate utf8_general_ci not null default '';