sql_modeの= ONLY_FULL_GROUP_BY
免責事項:この記事は記事のブロガーの記事、わずかに変更されたテストへの参照です。
参考記事:
猿医者 さん『のMySQL-これはsql_modeの=と互換性がありません学ぶために5分 ONLY_FULL_GROUP_BY 間違ったソリューションを。』
XiaoMaPro の" MySQLバージョン= ONLY_FULL_GROUP_BY問題のsql_modeの "
hhcoder 的" これにより、mysqlグループはsql_modeの= ONLY_FULL_GROUP_BYと互換性がありません」
まず、エラーメッセージ:
操作を使って、接続グループを去ったとき、次のエラーを報告しました。
#1055 - SELECTリストの式#3は、GROUP BY句ではなく、非凝集含ま
GROUP BY句の列に機能的に依存しない列「b.idを」;
これはsql_modeの= ONLY_FULL_GROUP_BYと互換性がありません。
第二に、翻訳エラー:
BY句の式の選択リスト#1055- 3 GROUPはないが、
未重合コラム「b.id」が含まれ、
機能欄にGROUP BY句に列を依存しない;だけ= SQLスキーマ」完全な「GROUP BYは互換性がありません。
第三に、エラーの原因:
MySQLの5.7、実装依存検出機能。
ONLY_FULL_GROUP_BY SQLモードがイネーブル(デフォルト)である場合は、
MySQLのクエリ選択リストの拒否、条件、またはコマンドリストが非集計列を参照句指定された機能によって、どちらのグループがそれらに依存しないです。
5.7(以前は、MySQLは関数依存性を検出しないとONLY_FULL_GROUP_BYデフォルトで有効になっていません。
ONLY_FULL_GROUP_BY、集計GROUP BY操作のために、
SELECTの列は、GROUP BYに表示されていない場合は、SQLがあるため、正当ではありません列は、GROUP BY句、ではありません
。このフィールドが表示され内部にそれ以外の場合はエラーがGROUP BY、または集約関数の後ろになります表示される必要があります列をチェックしてくださいと言うことです。
第四に、対処します:
(1)最初のMySQLバージョンを表示できます。
()のバージョンを選択します。
結果:5.7。14 - ログ
(2)再使用@@ GLOBAL.sql_modeを選択し、ONLY_FULL_GROUP_BYが有効になっている参照してください。
結果はその例を示します。
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
結果はONLY_FULL_GROUP_BY、代表者が有効になっています。
(3)この1を取り除きます:
@@設定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'。
(4)プロファイルまたは変更
オープンプロファイルmysql.cnfを
南あなたが/etc/mysql/mysql.cnf
2、設定を追加
sql_modeの= 'STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION'
3、再起動のMySQL
sudoのサービスMySQLの再起動
(5)再表示sql_modeのを、修正が成功したかどうかを確認します。
@@ sql_modeのを選択します。
(6)試験
それがエラーを持っているかどうかを確認するには、SQL文の実装。