用docker安装了一个mysql8的容器,镜像用的:container-registry.oracle.com/mysql/community-server:8.0
然后启动命令为:
docker run -d --name mysql80 -p 3306:3306 --restart always -v /root/database/mysql8/conf:/etc/mysql/conf.d -v /root/database/mysql8/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=YOUR_PASSWORD -d container-registry.oracle.com/mysql/community-server:8.0
数据文件在/root/database/mysql8/data,配置文章在/root/database/mysql8/conf,里面有一个my.cnf文件。
因为在跑项目的时候,写入mysql的数据出现问题,提示格式不对,因为mysql当前处于严格模式。
SELECT @@sql_mode;
输出里面看到:
STRICT_TRANS_TABLES 和 STRICT_ALL_TABLES
然后我去查看我挂载的my.cnf文件。
[mysqld]
#服务端口号 默认3306
port=3306
sql_mode = "ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
datadir = /var/lib/mysql
里面本身就没有 STRICT_TRANS_TABLES 和 STRICT_ALL_TABLES 这2个配置项。
而且我怎么改它,也不生效。
所以我判定,这个mysql引用的配置文件的路径不是在 /etc/mysql/conf.d/my.cnf
所以搜索了一遍docker里的文件,发现实际mysql的配置文件为 /etc/my.cnf
于是我修改了一下 /etc/my.cnf, 在mysqld里面加了下面这一句话:
sql_mode = "ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
然后重启docker。重新跑一下:
SELECT @@sql_mode;
然后就发现修改后有变化了。然后api插入数据也变得正常了。
转载请注明:QMT|Ptrade量化交易 » 修改docker mysql配置文件