无法在 ubuntu 16.04 上摆脱 sql_mode ONLY_FULL_GROUP_BY

无法在 ubuntu 16.04 上摆脱 sql_mode ONLY_FULL_GROUP_BY

无法在 ubuntu 16.04 上摆脱 sql_mode ONLY_FULL_GROUP_BY

我正在尝试以持久方式删除 sql_mode = ONLY_FULL_GROUP_BY。发出以下命令,我可以为此会话执行此操作

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))

然后我尝试通过修改 /etc/mysql/my.cnf /etc/mysql/mysql.cnf /etc/mysql/mysql.conf.d/mysqld.cnf 添加一个部分来永久删除它

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

但是当我重启 mysql 时,ONLY_FULL_GROUP_BY 模式仍然存在。我没得选择了。

有人能提供一些帮助吗?谢谢。

答案1

对我而言唯一有用的就是编辑 /lib/systemd/system/mysql.service:

# MySQL systemd service file

[Unit]
Description=MySQL Community Server
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
User=mysql
Group=mysql
PermissionsStartOnly=true
ExecStartPre=/usr/share/mysql/mysql-systemd-start pre
# Normally, we'd simply use:
# ExecStart=/usr/sbin/mysqld
ExecStart=/usr/sbin/mysqld --sql-mode=ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
ExecStartPost=/usr/share/mysql/mysql-systemd-start post
TimeoutSec=600
Restart=on-failure
RuntimeDirectory=mysqld
RuntimeDirectoryMode=755

答案2

根据您的 mysql 发行版,/etc/mysql/my.cnf 应该已经有 [mysqld] 部分。我会查看 my.cnf* 文件并查看 sql_mode 是否已经存在。您使用的是哪个 mysql 版本?

相关内容