您当前的位置: 首页 >  docker

qq_34412985

暂无认证

  • 0浏览

    0关注

    1061博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

docker安装MySQL 5.7 timestamp类型设置default value为'0000-00-00 00:00:00'报错的解决方法

qq_34412985 发布时间:2019-09-16 14:10:13 ,浏览量:0

mysql是使用docker安装的bitnami/mysql:5.7版本,在导入数据时报错,Error Code: 1067 - Invalid default value for 'xxx'。 原因是因为这个字段为timestamp类型,而且默认值为’0000-00-00 00:00:00’, 'xxx' timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' 查了下资料才知道原来5.7及以上版本是不允许这么设置的,那怎么解决呢? 是不是可以修改配置文件,查了下资料,有人说可以在my.ini中mysqld设置sql_mode。如:

[mysqld] sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

这个bitnami/mysql跟我们平时使用的mysql安装目录有些区别,于是搜索了下docker官网,找了下mysql的配置文件所在路径 /opt/bitnami/mysql/conf/bitnami/my.cnf,把上面的配置加上了,重启了下docker,但发现没有效果,才发现原来重启之后刚才添加的配置不见了。 那换一种方式,既然我能连上mysql,那我是不是可以直接修改sql_mode呢? 查了下sql_mode

SHOW SESSION VARIABLES LIKE '%sql_mode%';

显示结果如下: Variable_name     Value sql_mode     ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

NO_ZERO_IN_DATE,NO_ZERO_DATE这两个值就是导致报错的根源,需要去除,重新设置一下sql_mode

SET sql_mode="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

然后重新导入,依然报同样的问题,奇了怪了。 最后查了下资料,需要设置为global

SET @@global.sql_mode ="ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

这样问题就解决了。  

关注
打赏
1653291990
查看更多评论
立即登录/注册

微信扫码登录

0.0464s