问题背景:
- 使用navicat连接mysql插入中文内容时,出现”Mysql 插入中文错误:Incorrect string value:“,经测试直接在命令行中输入insert也会这样
问题原因
- 问题一:在创建表时,未指定字符集
- 问题二:由于未指定表的字符集,导致列的字符集也不是utf8
解决方案
查询表属性
show create table Student
问题一
还未建表
- 在创建表时就把字符集指定
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
已经建表
alter table Student default character set utf8;
问题二
还未建表
- 建表时指定表的字符集即可,列的字符集会自动跟随表的字符集
已经建表
- 已经交表后修改表的字符集不会影响列的字符集,需要手动修改列的字符集
alter table Student modify Student char(20) character set utf8;