簡體   English   中英

如何在我的 Mac 上永久設置 SQL_MODE

[英]How can set SQL_MODE permanently on my mac

我在我的 OsX 10.11 El Capitan 上安裝 MySql。 如果我嘗試開始我的查詢,如果我的查詢有分組依據,我會遇到一個奇怪的錯誤。

因此,如果我嘗試從終端執行此查詢:

SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

我可以執行我的查詢沒問題。 現在,如果我嘗試重新啟動我的 macbook,我遇到了一些問題,我可以重新執行查詢。

有什么方法可以永久修復此 sql_mode?

我無法打開“etc/mysql/my.cnf”文件,但我的 mac 上沒有這個文件。 我如何應用此更改?

你可以設置 my.cnf 並添加你的 sql_mode 配置

  [mysqld]
  sql_mode=ONLY_FULL_GROUP_BY

默認情況下,OS X 安裝不使用 my.cnf,而 MySQL 只使用默認值。 要設置您自己的 my.cnf,您可以直接在 /etc 中創建一個文件。

如果您使用的是MAMP PRO ,請注意指南中的這一點:

您不能直接編輯 my.cnf 文件。 您必須使用 MAMP PRO 界面來編輯您的 my.cnf 文件。 在菜單中轉到文件 > 編輯模板 > MySQL > my.cnf。

然后你可以在 [mysqld] 標題下添加你想要的 sql_mode。 例如:

[mysqld]
sql_mode=ONLY_FULL_GROUP_BY

這對我有用。

如果你想關閉 ONLY_FULL_GROUP_BY,你需要先檢查 sql_mode 變量的值:

(默認值)

 mysql> show variables like 'sql_mode'\G
 *************************** 1. row ***************************
 Variable_name: sql_mode
    Value: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

1 row in set (0,01 sec)

編輯 MySQL 配置文件 my.conf。 通常在 /etc/my.cnf 就像 scaisEdge 所說的那樣。 但是,你必須寫:

[mysqld]
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

(沒有 ONLY_FULL_GROUP_BY 的所有值 - 您可以復制/粘貼此行)

重啟你的 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 並啟動服務器。

參考: https ://mampsupportforum.com/forums/latest/mamp-mamp-pro-disable-mysql-strict-mode

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM