1.[ERR]1406报错解析
通过Navicat Premium将Excel文件导入MySQL数据库时出现报错“[ERR]1406 – Data too long for column ‘AB’ at row 1”。意思是导入的数据过长,超出了数据库为其设定的范围。
查看Excel中‘AB’字段报错的那一条记录发现数据长度为808字符。
在Navicat中点击“上一步”返回至数据空间设定界面,发现在数据导入时Navicat默认将数据空间设定为varchar类型数据,长度为255字节。记录的数据长度确实超出了设定值的大小。
2.[ERR]1118报错解析
修改varchar数据类型的长度,使其满足需求,结果出现报错[ERR]1118-Cannot create table,varchar类型数据长度不得超过了65535字节。
查阅资料得,varchar 保存时用一个字节或两个字节长的前缀+数据。故varchar 的最大长度应为65532=65535-1-2(字节),utf-8下为21844=65532/3(字符)。如图5所示,varchar类型数据设定21845字符保存时报错。
值得注意的是,当全字段varchar数据的长度超过21844字符(utf-8下)时仍会报错,所以varchar的字符限制是对全字段而言的!
3.解决方法
故对于大文本数据,解决方法是将部分字段的数据类型从varchar调整为text,如果数据超过了64K则可以选择存储空间更大的数据类型longtext或者midiumtext,具体可参考图8。
注:对于5.0版本以上的MySQL,varchar数据类型的存储上限已经更改为65535字节。
最后成功导入。
注:虽然设定text数据类型解决了大文本的存储问题,但也降低了查询速度,故在条件允许的情况下优先使用varchar数据类型。
如果这篇文章对您有帮助的话,麻烦点个赞再走吧~