MySQLのトラブルシューティング - BY句問題MySQLのGROUPを解決するために、エラーが非集計列に含まれていません

トラブルシューティング- 解決のMySQL に含まれていない非ポリマーカラムのGROUP BY 句のエラーの問題を

で:助成金の顧客のQQ 1033553122

 

テスト環境

win10

MySQLの5.7

 

問題の説明:

次のようなMySQLのクエリ、

SELECT ID、名前、名前BY case_tableグループからのCNTとしてカウント(*)

エラー、次のように:

服务器内部错误(1055、「SELECTリストの式#1は、GROUP BY句ではなく、GROUP BY句の列に機能的に依存しない非凝集列 『case_table.id』が含まれ、これはsql_modeの= ONLY_FULL_GROUP_BYと互換性がありません」)

 

理由:非ポリマーカラムIDの存在は、GROUP BY句に含まれていません。

 

しかし、この場合には、他の場所は、id列を使用する必要があり、それが行うことになって、削除することはできませんか?次のように

 

ソリューション

方法1

グローバルsql_modeのを照会

GLOBAL.sql_modeをSELECT @@;

若しくは

@@のsql_modeを選択

 

 

次のようにクエリ結果は以下のとおりです。

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 ';
SET SESSION
 

 

 

次のようにコピークエリ結果の値が、その後、「ONLY_FULL_GROUP_BY」SESSIONは、クエリの結果を削除sql_model、GLOBAL 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セッションsql_modeの= 'STRICT_TRANS_TABLES、NO_ZERO_IN_DATE、NO_ZERO_DATE、ERROR_FOR_DIVISION_BY_ZERO、NO_AUTO_CREATE_USER、NO_ENGINE_SUBSTITUTION'。

注意:このメソッドは、一時的に変更するために使用されているmysqlの、上記の無効化を再起動してください。

 

方法2

MySQLを起動すると以下のように、sql_modelのオプションを増やします。

mysqldの--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:

次のようにLinuxサービスの下で、my.conf(Windowsの修飾のmy.ini)を変更し、[mysqldを]ノードの下に、最もsql_modeのは、エンド構成に追加されました:

...

[mysqldを】

...

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/shouke/p/11569464.html