Mysql新建表,插入中文时报错“Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column”问题


有时候我们在往数据库中输入信息时,如果输入的内容是中文,会报错“Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column”。

例如:

CREATE TABLE test(ID INT PRIMARY KEY AUTO_INCREMENT

, test_name VARCHAR(20) , test_num INT);                                                       /*建立一个表*/

insert into test(test_name) values('你好');                                                         /*建表之后插入一条带有中文的数据*/

 

解决的方法:

1、在建立表时设置默认字符串编码方式为utf8

CREATE TABLE test2(ID INT PRIMARY KEY AUTO_INCREMENT

, test_name VARCHAR(20) , test_num INT)default charset = utf8;                        /*建立一个表,加上“default charset = utf8”,设置默认字符串编码方式为utf8。*/

insert into test2(test_name) values('你好');                                                      /*建表之后插入一条带有中文的数据*/

这次就可以成功添加

 

2、已经添加的表,需要设置一下:ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;

ALTER TABLE test CONVERT TO

CHARACTER SET utf8 COLLATE utf8_unicode_ci;                                               /*例如刚刚建立的test表,插入中文时会报错,现在对其进行设置*/

insert into test(test_name) values('你好');                                                        /*设置之后插入一条带有中文的数据*/

 

3、直接修改数据库的字符串编码属性:ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci

ALTER DATABASE testdb CHARACTER

SET utf8 COLLATE utf8_unicode_ci;                                                                /*修改数据库testdb的编码方式*/

CREATE TABLE testdb.test3(ID INT PRIMARY KEY AUTO_INCREMENT

, test_name VARCHAR(20) , test_num INT)default charset = utf8;                        /*建立一个表,加上“default charset = utf8”,设置默认字符串编码方式为utf8。*/

insert into testdb.test3(test_name) values('你好');                                             /*建表之后插入一条带有中文的数据*/

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM