太长不看版本:Terminal连接进MySQL之后 set @@global.sql_mode='';,解忧。
在Navicat中给MySQL导入数据时,遇上失败,细查报错原因,发现有这么一行提示:
[ERR] 1406 - Data too long for column 'property' at row 2

嗯...太长,怎么办?🤔
老样子,把关键句子拷贝出来放搜索引擎里检索一下...

出现相同问题的人还挺多,搜索结果都有60万条...
查看几个结果之后,发现解决办法大同小异,核心思路是一样的:
修改sql_mode,关闭STRICT模式
开始修改之前,先查看下目前启用的什么模式
SHOW VARIABLES LIKE 'sql_mode';

看到了STRICT_TRANS_TABLES(存储引擎启用严格模式,非法数据值被拒绝),按照之前找到的方法,这时候我只要关闭这个模式就OK了😬
SET sql_mode='ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

查看下当前什么模式
SHOW VARIABLES LIKE 'sql_mode';

看起来没问题😬
接着重新导入数据再看

😐没成功!?
我陷入了沉思....
换个地方试试?
我打开Hyper(一款Terminal工具)
mysql -u root -p
show variables like 'sql_mode';

wtf?😭
果然之前操作的没有成功,才导致导入数据失败!
马不停蹄
set sql_mode='ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
再次检查一下模式是否设置成功

ok!返回去重新导入数据,还是失败,模式修改不是全局的缘故?🤔
重新设置模式
set @@global.sql_mode='ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

终于成功了😭
愿所有人少走无谓的弯路。