【MAMP / MySQL5.7】ONLY_FULL_GROUP_BYをMAMPで無効にする

MySQL5.6.5以降で、SELECT句に指定がないカラムがGROUP BY句に入っていると、正しく無いよということでエラーが出るようになりました。

詳しくは、公式ドキュメントで。

https://dev.mysql.com/doc/refman/5.6/ja/sql-mode.html

MAMPのバージョンを落とすか、SQL自体を修正するか悩みましたたが、一番手っ取り早いのでいいや…。

後でちゃんと考えます。

SQLモードのonly_full_group_byを無効にすることにします。

環境

MAMP 6.3
Mac OS Big Sur 11.3

MAMPは2021年5月3日現在で、最新バージョンです。

ざっと流れの説明

  1. phpMyAdminを使って、MySQLのSQLモードを変更します
  2. MAMPにmsqylの設定ファイルを作ってSQLモードを設定する

5分もかかからないと思います。

SQLモードの変更

phpMyAdminにアクセスして、SQLを入力、実行し現在の確認をしておきます。

SELECT @@global.sql_mode;

sql_modeに色々入っているのが確認できると思います、これを変更します。

以下のSQLを入力、実行します。

SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';

これでphpMyAdminは完了です。

MySQLの設定ファイルを変更

使っているのはMAMPの無料版です。

PROはおそらく設定ファイルが入っているかと思います。

1. MAMPを停止する

まずは、一旦MAMPを停止しましょう。

2. /Applications/MAMP/Library/にmy.cnfファイルを作成する

設定ファイルが無いと思いますので、/Applications/MAMP/Library/にmy.cnfファイルを作成します。

特にパーミッションを変更する必要はなかったです。

3.my.confにコンテンツを追加

以下を追加して([mysqld]も入れます)、保存します。

[mysqld]
sql_mode = NO_ENGINE_SUBSTITUTION

4.MAMPを起動

MAMPを起動して、Stopが緑色になればOKです。

お疲れさまでした。