Cool
Cool
Published on 2024-09-04 / 34 Visits
0
0

docker mysql5.7 修改sql mode

要修改 Docker 容器中 MySQL 5.7 的 SQL 模式(SQL mode),可以通过以下几种方法实现:

方法 1:修改 MySQL 配置文件

  1. 创建一个自定义的 MySQL 配置文件:

    创建一个 my.cnf 文件,并添加以下内容:

    [mysqld]
    sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
    

    上面的内容是一个示例配置,你可以根据需要修改 sql_mode 的值。

  2. 挂载自定义配置文件到 Docker 容器:

    在运行 MySQL 容器时,使用 -v 参数将本地的配置文件挂载到容器内:

    docker run --name mysql -v /path/to/my.cnf:/etc/mysql/conf.d/my.cnf -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7
    

    确保 /path/to/my.cnf 是你本地配置文件的实际路径。

方法 2:通过环境变量修改 SQL mode

  1. 使用 --sql_mode 选项:

    运行 MySQL 容器时,通过 --sql_mode 选项直接指定 SQL 模式:

    docker run --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7 --sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
    

方法 3:在运行的 MySQL 容器中更改 SQL mode

  1. 进入 MySQL 容器:

    docker exec -it mysql bash
    
  2. 连接 MySQL:

    mysql -u root -p
    
  3. 查看当前 SQL mode:

    SHOW VARIABLES LIKE 'sql_mode';
    
  4. 修改 SQL mode:

    SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
    

    要永久保存这个设置,需要将其加入 MySQL 的配置文件中,或者在启动时使用上述的方法 1 或 2。

这三种方法都可以用来修改 Docker 中 MySQL 5.7 的 SQL mode,选择最适合你环境的方法即可。


Comment