docker 挂载的 mysql.cnf 配置修改 sql_mode重启后不生效

1. 运行环境

lnmp

1). 当前使用的 Laravel 版本?

laravel9
//: <> (使用 php artisan --version 命令查看)

2). 当前使用的 php/php-fpm 版本?

PHP 版本:8.1

php-fpm 版本:8.1

3). 当前系统

centos 7.9
//: <> (期待数值 Windows 10 / Ubuntu 20.4 / CentOS 8 )

4). 业务环境

5). 相关软件版本

mysql8
//: <> (提供相关软件的版本,如 Nginx 、MySQL、MongoDB 等)

2. 问题描述?

docker 挂载的 mysql.cnf 配置修改 sql_mode重启后不生效

docker-compose.yml 如下
mysql:
image: mysql/mysql-server:${MYSQL_VERSION}
container_name: mysql
ports:
- “${MYSQL_HOST_PORT}:3306”
volumes:
- ${MYSQL_CONF_FILE}:/etc/mysql/conf.d/mysql.cnf:ro
- ${DATA_DIR}/mysql:/var/lib/mysql/:rw
- ${MYSQL_LOG_DIR}:/var/log/mysql/:rw

restart: always
networks:
  - default
environment:
  MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
  MYSQL_ROOT_HOST: "${MYSQL_ROOT_HOST}"
  TZ: "$TZ"

mysql.cnf 配置
[client]

#port = 3307

#default-character-set = utf8mb4

[mysqld]

#user = mysql

#port = 3307
sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

#default-storage-engine = InnoDB

#default-authentication-plugin = mysql_native_password

#character-set-server = utf8mb4

#collation-server = utf8mb4_unicode_ci

#init_connect = ‘SET NAMES utf8mb4’

#disable-log-bin

#skip-character-set-client-handshake

#explicit_defaults_for_timestamp

#slow_query_log

#long_query_time = 3

#slow-query-log-file = /var/log/mysql/mysql.slow.log

#log-error = /var/log/mysql/mysql.error.log

#default-time-zone = ‘+8:00’

[mysql]

#default-character-set = utf8mb4

3. 您期望得到的结果?

4. 您实际得到的结果?

SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘bainong.order.createtime’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

laravel 框架中数据库的配置文件 config/database.php 有个 mysql.strict 修改为 false

1年前 评论
忆往昔弹指间 1年前
chowjiawei

配置文件 中 修改sql_mode

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION 然后重启

由于mysql的配置 修改后 是只会影响 新创建的数据库的 已有数据库 需要执行 上面这个命令 才能够修改成功 重启数据库后 将旧数据库也一并修改 SET sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

以后 创建的数据库 和现在的数据库就都不会再有问题 要不然 临时解决 新数据库也会有这个问题

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!