报错このことにより、mysql5.7のgruopはsql_modeの= ONLY_FULL_GROUP_BYと互換性がありません。

  1. 分析:MySQLの検索ツールで、データ・タイムズ次のエラーの挿入:
    ERROR 1055(42000):SELECTリストの式#1は、GROUP BY句ではなく、GROUP BY句の列に機能的に依存しない非凝集列「database_tl.emp.id」を含みます。これはsql_modeの= ONLY_FULL_GROUP_BYと互換性がありません。
  2. 理由:
    構文によってグループを見てください:
    列は、列をグループ化することにより、テーブル名+重合性官能基から選択されたパケットを選択します 
    ビューの構文の観点から、検索欄を決定する最初のパケットであり、そして、カラムは、カラムグループに参加するように選択検索することができます。
    私の現在のMySQLバージョン5.7.17、
    SELECTの列は、GROUP BYに表示されない場合は、列がチェックアウトと言うことですGROUP BY句ではないため、GROUP BY集計操作については、その後、SQLは、合法的ではありません。もう一度ONLY_FULL_GROUP_BY手段を見てそうでない場合、カラムはバックによって与えられ、又は重合関数内のフィールドに見つかったグループに表示されなければなりません。
  3. ソリューション:
    集約関数を増加させるだけ列の後ろ、列またはを選択して、グループ内の(1)、(推奨しません)
    (2)コマンドライン:
    セット@@ GLOBAL.sql_mode = '';
    セットsql_modeの= '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オフデフォルトのスイッチ!
     
    ツールを使用して、この時間は、それを選択します
    @@ sql_modeのを選択します。
    SELECT @@ GLOBAL.sql_mode。
    それはすでにOKを感じ、もはやがONLY_FULL_GROUP_BYを存在しないことがわかりました。あなたがMySQLサービスを再起動した場合でも、私はONLY_FULL_GROUP_BYまだ存在しました。
    あなたが行くとのmy.ini設定を変更する必要があり、この問題を解決したい(このファイルのMySQLを持っていない場合は、my.iniファイルに私-default.iniを入れて、私のバージョンは、のmy.ini設定の問題ではありません)
     
    [mysqldを]と[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'; 
 
 
 
 

おすすめ

転載: www.cnblogs.com/xiaolongui/p/12021657.html