我有这样一个
docker-compose.yml
:
database:
container_name: test_db
image: mysql:5.7
volumes:
- ./docker/my.cnf:/etc/my.cnf
environment:
- "MYSQL_ROOT_PASSWORD=root"
- "MYSQL_DATABASE=test_db"
ports:
- "3306:3306"
volumes:
- test_db_data:/var/lib/mysql
volumes:
test_db_data:
我想编辑
sql_mode
。
./docker/my.cnf
包含:
[mysqld]
sql_mode=""
但是当我从本地计算机连接到数据库并运行
SELECT @@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
我做错了什么?
您可以将其添加到您的数据库服务中:
command: --sql_mode=""
所以它:
database:
container_name: test_db
image: mysql:5.7
volumes:
- ./docker/my.cnf:/etc/my.cnf
environment:
- "MYSQL_ROOT_PASSWORD=root"
- "MYSQL_DATABASE=test_db"
ports:
- "3306:3306"
volumes:
- test_db_data:/var/lib/mysql
command: --sql_mode=""
尝试仅使用一个“volumes”指令。也许它只使用最后一个。
这对我有用。可能与常规的 mySql 类似。关键部分是使我的自定义 cnf 只读。否则 mariadb 在日志中抱怨并忽略它。
services:
my-mariadb:
image: mariadb
volumes:
- type: bind
source: .\Data\my_mariadb\lowercase_tables.cnf #this needs to be read-only in the host
target: /etc/mysql/mariadb.conf.d/lowercase_tables.cnf
ports:
- '3300:3306'
environment:
- MARIADB_ROOT_PASSWORD=myPassword
我变了
- ./docker/my.cnf:/etc/my.cnf
到
- ./docker/my.cnf:/etc/alternatives/my.cnf
作为附带奖励,它看起来被认为是“更好的做法”。