问题的原因:
创建数据库和数据表的时候未设置编码造成的。
现象:
向数据表的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
评论区