【问题标题】:Why can't I change sql_mode permanently?为什么我不能永久更改 sql_mode?
【发布时间】:2016-03-10 02:58:32
【问题描述】:

我目前在 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 时,一切都恢复了原来的样子。

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

【问题讨论】:

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


    【解决方案1】:

    更新:抱歉,忘记您使用的是 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

    【讨论】:

      【解决方案2】:

      如果您安装了 MySQL Workbench,请检查您的实例基目录的服务器状态。您应该在那里找到一个 my.ini 文件来保存您的更改。

      【讨论】:

        【解决方案3】:

        sql_mode 需要添加到文件 /etc/init.d/mysql 作为参数来启动:

        $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" --sql-mode="" $other_args >/dev/null 2>&1 &
        

        重启 MySQL 数据库服务器以应用新配置。

        【讨论】:

          【解决方案4】:

          在 MYSQL 8 和 ubuntu server 20.xx 中我必须添加:

          sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTIO
          

          归档 /etc/mysql/mysql.conf.d/mysqld.cnf

          为了服务器重启后设置保持不变

          免责声明

          这是它实际工作的唯一地方,我不知道在哪里添加这些自定义设置的好习惯是什么,但它“如果它有效,它并不愚蠢”。谁能告诉我。

          我尝试了在论坛上找到的其他选项:

          • my.cnf 无法创建
          • 自定义 cnf 不起作用
          • 将其添加到 mysql.cnf 不起作用

          【讨论】:

            猜你喜欢
            • 2022-11-28
            • 2013-12-20
            • 2018-08-21
            • 1970-01-01
            • 2017-09-20
            • 2012-10-17
            • 2017-08-04
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多