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

标签 mysql command-line mysql-5.6 sql-mode

我目前在 Windows 10 中使用 mysql server 5.6。在使用 mysql 时,不断出现这样的错误“以下列没有默认值”我在互联网上读到我可以解决这个问题如果我更改 sql_mode。目前设置为

 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

我从“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

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

  sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

  sql_mode=

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

  task manager >> services >> mysql56

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

  select @@sql_mode;

我知道我的 sql_mode 是

  STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

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

  set @@global.sql_mode="";

它起作用了,但是当我重新启动 MySQL 时,一切都恢复原样了。

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

最佳答案

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


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

[mysqld]
sql_mode=

我只是做了同样的事情,只是将 sql_mode 设置为 NO_ENGINE_SUBSTITUTION

关于mysql - 为什么我不能永久更改 sql_mode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34100844/

相关文章:

mysql - 单表特定单元格之间的SQL计算

ruby-on-rails - 未找到 sudo 和 chown 命令?

php - 为 symfony2 应用程序创建远程更新服务

php - 找不到图片 moodle

php - 输入字段提交最后一个索引,未选择索引

java - 为什么我的 IDE 可以找到 JAR,但我的命令行却找不到?

c - 使用 system() 来定位命令解释器的 COMSPEC 和 PATH 环境变量应该是什么?

mysql - 使用 IF 或 Case 在 MySQL 列中应用逻辑

mysql - 使用 != 而不是 < 时得到错误结果

mysql - 如何理解mysql的gen_lex_hash.cc的算法?