Docker修改MySQL容器的sql_mode

MySQL 5.7.5以后默认开启了sql_mode的ONLY_FULL_GROUP_BY

我使用了mysql:5.7.15作为mysql容器的镜像,

所以之前写的一些,本来是好的,带group的sql出现了一些问题。

登录mysql

前提是你要安装mysql-client哦,

1
mysql -h 127.0.0.1 -P 3308 -u root -p xxxxx

查看当前sql

1
mysql> select @@sql_mode;

显示:

1
2
3
4
5
6
7
mysql> select @@sql_mode;
+-------------------------------------------------------------------------------------------------------------------------------------------+
| @@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 |
+-------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

进入mysql容器命令行

1
docker exec -it <Docker容器 ID或Name> /bin/bash

修改sql_mode

mysql:5.7.15容器中mysqld的配置文件是放在:/etc/mysql/mysql.conf.d/mysqld.cnf,把去掉ONLY_FULL_GROUP_BY的sql_mode追加到此配置中

1
echo "sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION">>/etc/mysql/mysql.conf.d/mysqld.cnf

重启mysql容器

1
docker restart <Docker容器 ID或Name>