太长不看版本: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';

终于成功了😭

愿所有人少走无谓的弯路。