写在前面
本人近些天在将txt数据(以tab为分隔符,编码格式为utf-8)导入到MySql中时(使用Navicat for MySql),出现了错误,1366号错误:incorrect value。任凭我如何设置导入数据的编码格式,都会出现如上所述的错误。
参考解决方法
参考方法一
方法描述:在设计表格-选项中修改字符集和排序规则
介于以上问题,本人问了度娘,找到了一篇博文—— Navicat中 1366错误 incorrect string value ,以下是该博文的网址。
参考该博文提供的方法,选定目标表格,单击右键,选择设计表格(design table),然后选择选项(options),将字符集(charset)设置成utf-8,排序规则(collation)设置为 utf8_unicode_ci,再导入数据即可。如下图所示:
遇到的问题
本人根据如上设置之后,发现该错误仍然没有解决。本人看了博文的评论,有朋友通过该方法解决了问题,说明该方法至少是可行的,故此将该方法贴出来,提供给读者多一种参考解决办法。
参考方法二
方法描述:
使用Sql语句查询目标表格每列的编码格式:
SHOW FULL COULUMNS FROM ik_trian_data_new;
得到如下图所示的结果:
修改数据库字符集:
[sql]
ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];
把表默认的字符集和所有字符列(CHAR,VARCHAR,TEXT)改为新的字符集:
[sql]
ALTER TABLE tbl_name CONVERT TO CHARACTER SET character_name [COLLATE ...]
如:
ALTER TABLE logtest CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
只是修改表的默认字符集:
[sql]
ALTER TABLE tbl_name DEFAULT CHARACTER SET character_name [COLLATE...];
如:
ALTER TABLE logtest DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
修改字段的字符集:
[sql]
ALTER TABLE tbl_name CHANGE c_name c_name CHARACTER SET character_name [COLLATE ...];
如:
ALTER TABLE logtest CHANGE title title VARCHAR(100) CHARACTER SET utf8 COLLATE utf8_general_ci;
查看数据库编码:
[sql]
SHOW CREATE DATABASE db_name;
查看表编码:
[sql]
SHOW CREATE TABLE tbl_name;
查看字段编码:
[sql]
SHOW FULL COLUMNS FROM tbl_name;
我的方法
方法描述:
介于以上两种方法,我都没有成功的解决问题。在本人的摸索下,终于将该问题解决,同样是选定目标表格,单击右键,选择设计表格(design table),然后选定每列,修改其编码格式。如下图所示:
由此,本人成功解决导入txt数据时的1366错误。
小结
解决该错误的方法很多,但是不是每一种都能够有效的解决实际问题(由于每个人特定的因素),所以要根据自身特定的情况,尝试各种参考解决方法。希望以上各种方法对大家有用。