2017-08-08 8 views
1

MySQL 5.6で正常に動作したストアドプロシージャがあります。最近のサーバの移行中に、MySQL 5.7.19にアップグレードしました。sql_modeが空白であるにもかかわらず、 "sql_mode = only_full_group_byと互換性がありません"というストアドプロシージャ

私のストアドプロシージャは現在、エラーがスローされます:

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'utility-monitor.daily_readings.building_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by: CALL monthly_readings(2017, 1, NULL, 1, 1))

私は、/var/mysql/my.cnfファイルを経由して""sql_modeを設定MySQLサービスを再起動し、sql_modeが空白経由であることを確認するために、コンソール経由でログインしましたSELECT @@sql_mode;

これにもかかわらず、私はストアドプロシージャを実行しようとすると、上記のエラーが表示され続けます。

このエラーの原因となるトラブルシューティングを続けるには、次に何ができるのですか? documentationによると、MySQLはあなたがプロシージャを作成したときにアクティブであったSQLモードを使用しています

+0

MySQL 5.7では、 'ONLY_FULL_GROUP_BY'がデフォルトです。 – Barmar

+0

https://stackoverflow.com/questions/23921117/disable-only-full-group-byこれを確認する – Jenish

答えて

2

MySQL stores the sql_mode system variable setting in effect when a routine is created or altered, and always executes the routine with this setting in force, regardless of the current server SQL mode when the routine begins executing.

(それが影響を受けるだけではないかもしれないとして、またはすべての)だから、手順を再作成して異なるモードが有効になっている(またはgroup by構文を修正してください)。 を変更する手順は、ドキュメントに記載されていますが、十分ではありません。 SQLモードを永続的に変更しないでください(他の互換性のないコードもあるかもしれませんが)。

関連する問題