如果sql_mode
似乎没有起作用,可能是由以下几个原因造成的:
-
配置文件位置不正确:确保
my.ini
文件位于MySQL服务器实际读取配置的位置。对于Windows系统,这通常是MySQL安装目录下的bin
文件夹。对于Linux系统,它可能位于/etc/mysql/
、/etc/my.cnf
或~/.my.cnf
等位置。 -
MySQL服务未重启:对
my.ini
文件所做的任何更改都需要重启MySQL服务才能生效。确保在修改配置文件后已经重启了MySQL服务。 -
MySQL版本问题:
ONLY_FULL_GROUP_BY
是在MySQL 5.7.5及更高版本中引入的。如果您使用的是早于这个版本的MySQL,only_full_group_by
模式将不可用。 -
会话级别的SQL模式:即使在全局级别(通过
my.ini
或my.cnf
)更改了sql_mode
,用户会话也可以覆盖这些设置。确保没有用户会话在运行时更改了SQL模式。 -
其他配置文件:MySQL可能会从多个位置读取配置文件,包括
/etc/mysql/my.cnf
、/etc/my.cnf
、C:\ProgramData\MySQL\MySQL Server X.X\my.ini
(Windows)等。确保您修改的是正确的配置文件,并且没有其他配置文件在覆盖您的设置。 -
错误的注释:在您的配置中,
#sql_mode=...
这一行是被注释掉的,这意味着MySQL不会读取这一行。确保在添加新的sql_mode
行时,前面的行是被完全注释掉的,没有额外的空格或字符。
为了验证sql_mode
是否已正确设置,您可以登录到MySQL服务器并执行以下命令来检查当前的SQL模式:
SHOW VARIABLES LIKE 'sql_mode';
这将显示当前生效的sql_mode
设置。如果ONLY_FULL_GROUP_BY
仍然出现在列表中,那么说明sql_mode
没有被正确设置。在这种情况下,您应该检查上述提到的可能原因,并确保MySQL服务已经重启。