【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日現在で、最新バージョンです。
ONLY_FULL_GROUP_BYを無効にする、ざっと流れ
- phpMyAdminを使って、MySQLのSQLモードを変更します
- 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です。
お疲れさまでした。