欢迎访问我的个人博客:机器学习之路
问题的原因:
创建数据库和数据表的时候未设置编码造成的。
现象:
向数据表的varchar类型列插入中文报错
解决:
(1)修改数据库和数据表的编码格式为utf8 -- UTF-8 Unicode,排序规则为utf8_general_ci;
(2)做完这些还不够,因为数据表的列的编码格式仍然不是utf8,看下面:
查看数据表的编码格式:
show create table tb_name
显示如下:
CREATE TABLE `tb_shi` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sheng_id` int(11) NOT NULL,
`name` varchar(20) CHARACTER SET latin1 NOT NULL,
PRIMARY KEY (`id`),
KEY `sheng_id` (`sheng_id`),
CONSTRAINT `tb_shi_ibfk_1` FOREIGN KEY (`sheng_id`) REFERENCES `tb_sheng` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
如上面name列标蓝加下划线的地方,列的编码格式仍然为latin1,接下来:
(3)修改数据列的编码格式:
alter table 表名 change 列名 列名 varchar(40) character set utf8