【问题标题】:Keep the show_compatibility_56 always ON in MySQL在 MySQL 中保持 show_compatibility_56 始终开启
【发布时间】:2016-02-17 06:08:56
【问题描述】:

我需要在 MySQL 中将系统变量“show_compatibility_56”设置为 ON。所以,我运行命令set global show_compatibility_56 = on;,它工作了但是,我注意到每当我停止然后启动MySQL服务器时,这个变量就会回到OFF。即使我重新启动服务器,关于如何保持它始终开启的任何提示?

【问题讨论】:

    标签: mysql sql mysql-workbench


    【解决方案1】:

    我正在使用 Laravel Homestead (Vagrant) 盒子(MySql Ver 14.14 Distrib 5.7.17)。

    我需要通过 SSH 连接到 Homestead 然后运行:

    echo "[mysqld]
    show_compatibility_56 = ON
    performance_schema" | sudo tee -a /etc/mysql/conf.d/mysql.cnf  >/dev/null    
    sudo service mysql restart
    

    (感谢Mark Reed 展示了如何跳过打开vim。)

    旧版

    sudo vim /etc/mysql/conf.d/mysql.cnf

    然后我添加了这个部分:

    [mysqld]
    show_compatibility_56 = ON
    performance_schema
    

    我很惊讶这里和网络上其他地方的其他答案没有指定它需要在 [mysqld] 而不是 [mysql] 下,而且您必须重新启动 MySql 服务:

    sudo service mysql restart
    

    【讨论】:

    • 没错,没有人在乎 [group] 把那个愚蠢的配置选项放在哪里
    • 更多帮助是SHOW SESSION VARIABLES where Variable_name like '%show_compatibility%'。它有助于从 SQL 编辑器测试它是否良好
    • 哈,谷歌在 3 个月后将我带回了自己的答案,因为我再次遇到了这个问题。赢了!
    • 如果你已经用自制软件安装了mysql并且安装了自制服务,用brew services restart mysql重启mysql。
    【解决方案2】:

    您需要将此变量设置保存在您的配置文件 my.cnf for linux 和 my.ini for windows 中。

    【讨论】:

    • 你能告诉我在哪里可以找到 my.ini 文件(我指的是路径)吗?
    • 当你问 my.ini 时,你可以在 "C:\Program Files (x86)\MySQL\MySQL Server 5.5\my.ini" 路径中检查,如果你有不同的版本,只需更改版本根据您的 Windows 版本,还应该有不同的程序文件 (x86)。
    • 我找到了这个文件'my-default.ini',我认为这就是你所说的文件。我将这一行添加到它 show_compatibility_56= on。但是,它仍然无法正常工作,并且一旦我停止并启动服务器,此属性就会设置为关闭。有任何提示吗?
    • 在同一位置再复制一份名为 my.ini 的文件并更新此文件中的配置,然后重新启动 mysql 服务。
    • 试试“show_compatibility_56 = 1”,别忘了重启mysql服务。
    【解决方案3】:

    要使其永久化,您需要在 MySQL 的配置文件中添加此变量,就像我们对所有其他变量所做的那样:

    show_compatibility_56 = 开启

    对于基于 Linux 的系统: 文件名为 my.cnf,默认位置为 /etc/my.cnf

    对于基于 Windows 的系统: 文件名为 my.ini,默认位置是您的 windows mysql 数据目录,您可以通过以下命令检查:

    显示“datadir”等变量;

    【讨论】:

      【解决方案4】:

      如果您在 Mac 上通过 Hombrew 安装了 MySQL,则默认情况下没有 my.cnf。我在/etc/my.cnf 中创建了一个,添加了@Ryan 回答中的文字:

      [mysqld]
      show_compatibility_56 = ON
      performance_schema
      

      ...然后重新启动 MySQL,使用(我使用的是旧的 5.7 版本):

      $ brew services restart mysql@5.7
      

      这对我有用。

      【讨论】:

        【解决方案5】:

        正如 Zafar 已经指出的,您可以在配置文件中设置变量以保存该值。

        另请注意,现在已弃用。 manual 说:

        注意

        show_compatibility_56 已被弃用,因为它的唯一目的是 允许控制已弃用的系统和状态变量信息 将在未来的 MySQL 版本中删除的源。当那些 源被删除,show_compatibility_56 将没有任何用途,并且 也将被删除。

        【讨论】:

          猜你喜欢
          • 2018-01-11
          • 2020-08-12
          • 1970-01-01
          • 1970-01-01
          • 2015-05-08
          • 1970-01-01
          • 1970-01-01
          • 2018-02-22
          • 2017-04-10
          相关资源
          最近更新 更多