【问题标题】:How to disable strict mode in mysql using MAMP on a mac如何在 Mac 上使用 MAMP 在 mysql 中禁用严格模式
【发布时间】:2019-01-29 21:41:12
【问题描述】:

我花了几个小时试图弄清楚这一点,但我被严重卡住了。我今天安装了最新版本的 mysql,但我网站上的一些东西坏了。我相信这与严格的设置有关,IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

我试图禁用严格模式只是为了让我的网站正常工作,但这似乎是不可能的。我已经在终端尝试过,但没有运气。

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


[mysqld] 
    sql_mode="IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" 

我查看了我能找到的每个 etc 文件夹和其他各种文件夹,但看不到任何类似于 .cnf 文件的内容。

我可以通过 phpmyadmin 临时执行此操作,但如果我关闭 MAMP 或重新启动计算机,我必须再次执行此操作,因为更改不是永久性的。

【问题讨论】:

    标签: mysql phpmyadmin


    【解决方案1】:

    MAMP 专业版

    1. 打开 MAMP Pro 并检查您的设置 (+,)。确保 Hide Dock Icon 未选中。如果需要,取消选中该图标,退出 MAMP 并重新启动它。
      注意:这是查看 MAMP 菜单项所必需的。您可以稍后再次隐藏 Dock 图标。

    2. 打开 MAMP Pro 的主窗口并通过菜单转到 File > Edit Templates > MySQL > (your version)
      这将打开一个带有您的 MySQL 配置的文本编辑器。

    3. 在配置文件中查找[mysqld]这一行(注意末尾的d!)。
      在此行之后,添加一个包含以下文本的新行:sql_mode=""

    4. 保存文件,关闭它并重新启动您的 MySQL 服务器。


    MAMP(免费)

    默认情况下,MAMP free 会在没有 my.cnf 文件的情况下启动 MySQL 服务器,即它使用 MySQL 构建附带的默认配置。所以你必须手动创建一个配置文件:

    1. 退出 MAMP(停止服务器)
    2. 在终端中运行以下命令 - 它会在您的文本编辑器应用中打开配置文件:
      touch /Applications/MAMP/conf/my.cnf && open -t /Applications/MAMP/conf/my.cnf

    3. 当文件为空时,则添加以下内容

      [mysqld]
      sql_mode=""
      

      (当文件不为空时,只需在 [mysqld] 行之后添加行 sql_mode=""

    4. 保存配置文件并关闭文本编辑器; 重新启动 MAMP 并启动服务器。

    【讨论】:

    • @user8463989 感谢您的反馈!我已经更新了答案以免费提供 MAMP 的说明。让我知道,如果它有效(我现在没有免费版本来测试它)
    • 不幸的是,MAMP,从 MySQL 7.x 开始,出于安全原因,包含 my.cnf 并表示不支持这种类型的配置,不幸的是它保留了默认的 sql_mode,或者什么你可以做的就是创建一个程序,每次你连接mysql他configure或者sql_mode你咨询的方式。
    【解决方案2】:

    如果您运行的是 MySQL 8.x,请尝试以下操作:

    SET PERSIST SQL_MODE = "IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION";
    

    【讨论】:

    • 您是否将其作为命令运行?像运行选择、插入或任何其他命令一样运行它。如果这不起作用,是什么错误?
    • 似乎我所要做的就是这个[mysqld] sql_mode="",但是当我把它全部放在一行上时它就不起作用了。一旦我把它放在不同的行上,它就起作用了
    【解决方案3】:

    试图找到并编辑正确的 my.cnf 文件可能是错误的策略。对我来说,MAMP PRO 指南中的关键信息是:

    您不能直接编辑 my.cnf。你 必须使用 MAMP PRO 界面来编辑您的 my.cnf 文件。在菜单中 转到文件 > 编辑模板 > MySQL > my.cnf。

    【讨论】:

      【解决方案4】:

      只是为了更新 MAMP 5 的免费版本,我发现如果权限设置不正确,MAMP 将忽略 /Applications/MAMP/conf/ 目录中的 my.cnf 文件。我运行了这个命令来找出答案...... /Applications/MAMP/Library/bin/mysql --verbose --help | grep -A 1 "Default options"

      谁告诉我的。

      mysql:[警告] 全局可写配置文件 '/Applications/MAMP/conf/my.cnf' 被忽略。 默认选项按给定顺序从以下文件中读取: /etc/my.cnf /etc/mysql/my.cnf /Applications/MAMP/conf/my.cnf ~/.my.cnf

      在做 chmod 755 my.cnf

      设置正确。

      【讨论】:

        【解决方案5】:

        免费的地图

        转到 PhpMyAdmin > 变量选项卡 找到 sql mode 行并点击 edit 按钮 将此值替换为“STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”

        对我有用

        【讨论】:

          猜你喜欢
          • 2021-12-14
          • 1970-01-01
          • 2019-12-14
          • 2016-10-24
          • 2017-07-28
          • 1970-01-01
          • 2015-03-03
          • 1970-01-01
          • 2016-04-26
          相关资源
          最近更新 更多