docker-compose mysql配置修改 sql_mode mysql 8
时间: 2024-01-27 16:49:14 浏览: 211
.0版本以后,sql_mode默认开启了 STRICT_TRANS_TABLES 模式,导致在执行INSERT、UPDATE等语句时可能报错。如果需要修改这个配置,可以按照以下步骤进行:
1. 在docker-compose.yml中,找到mysql服务的配置项,添加environment部分,例如:
```
services:
mysql:
image: mysql:8.0
restart: always
environment:
MYSQL_DATABASE: dbname
MYSQL_USER: username
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
MYSQL_INIT_CONNECT: 'SET @@GLOBAL.sql_mode='''
MYSQL_INIT_SQL: '/docker-entrypoint-initdb.d/init.sql'
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/init:/docker-entrypoint-initdb.d
```
其中,MYSQL_INIT_CONNECT项用来修改sql_mode配置,将其设为空字符串;
MYSQL_INIT_SQL项用来指定初始化需要执行的SQL脚本文件,可以在该文件中进一步修改MySQL的配置项。
2. 在init.sql脚本中,添加如下语句:
```
SET SESSION sql_mode='';
```
该语句会在MySQL初始化时执行,将sql_mode配置项设为空字符串,从而关闭STRICT_TRANS_TABLES模式。
通过以上修改,可以成功关闭sql_mode配置项,避免在执行INSERT、UPDATE等语句时可能出现的错误。
阅读全文