Mysql 5を解決する.7以上のバージョンでgroupbyを使用してExpression#1 of SELECTリストis not in GROUP BY clause and contains no異常を放出

1380 ワード

出現原因:MySQL 5.7.5とupは機能依存の検出を実現した.only_が有効になっている場合full_group_by SQLモード(デフォルトではそうです)では、MySQLは、機能的に依存するのではなく、グループ内の名前のない非集約カラムを参照するリスト、条件、または順序リスト参照のクエリーの選択を拒否します.(5.7.5以前はMySQLで機能依存が検出されておらず、only_full_group_byはデフォルトでは有効になっていません
解決方法:
sql_の表示mode
select @@sql_mode;

設定を再起動しないsql_mode
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

プロファイルを変更しますmy.cnf構成では「only_full_group_by」を削除すればよいが、変更後はmysqlを再起動する必要がある.次のようになります.
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'