修改docker mysql配置文件

运维 qmt 2℃

用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配置文件

喜欢 (0)