为什么我不能永久更改 sql_mode?

moh*_*med 3 mysql command-line sql-mode mysql-5.6

我目前在 Windows 10 中使用 mysql 服务器 5.6。在使用 mysql 时,不断出现错误,类似于“以下列没有默认值”我在互联网上读到,如果我更改,我可以解决此问题sql_模式。目前设置为

 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Run Code Online (Sandbox Code Playgroud)

我从“mysql server 5.6”文件夹中的“my-default.ini”文件中获取了它。我读到的其他几个答案说,如果您想永久更改 sql_mode,您应该通过“my-default.ini”文件来完成。所以我所做的是,我以管理员身份运行记事本,然后浏览打开“my-default.ini”文件,该文件位于:

  c:\programs files (x86)\mysql\mysql server 5.6\my-default.ini
Run Code Online (Sandbox Code Playgroud)

当我打开文件时,我修改了最后一行:

  sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
Run Code Online (Sandbox Code Playgroud)

  sql_mode=
Run Code Online (Sandbox Code Playgroud)

然后我保存了文件,关闭了它。然后通过使用任务管理器我重新启动了我的sql服务器:

  task manager >> services >> mysql56
Run Code Online (Sandbox Code Playgroud)

这是应该永久修改我的sql_mode的整个过程。当我查看“my-default.ini”文件时,最后一行仍然被修改。但是如果我通过命令行登录mysql并使用以下代码查看我的sql_mode:

  select @@sql_mode;
Run Code Online (Sandbox Code Playgroud)

我知道我的 sql_mode 是

  STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Run Code Online (Sandbox Code Playgroud)

我希望所有这些都被(永久)删除,以便我的错误消失。如果我尝试使用以下命令从命令行修改 sql_mode:

  set @@global.sql_mode="";
Run Code Online (Sandbox Code Playgroud)

它有效,但是当我重新启动 MySQL 时,一切都恢复到以前的样子。

有人可以告诉我我做错了什么吗?以及是否有其他方法可以解决这个问题。

Cor*_*ter 5

更新:抱歉,忘记您使用的是 Windows 10。我不确定如何在 Windows 中处理此问题,但也许可以尝试复制my-default.inimy.ini更改该设置。抱歉造成混乱。


不确定是否可以将 sql_mode 设置为空,但尝试更改文件中的值/etc/mysql/my.cnf。如果该文件夹/文件不存在,请创建它并尝试sql_mode如下设置[mysqld]

[mysqld]
sql_mode=
Run Code Online (Sandbox Code Playgroud)

我只是做了同样的事情,只是我将其设置sql_modeNO_ENGINE_SUBSTITUTION