Navicatはクライアントが更新文のエラー[のErr] 1055を使用してアップデートを実行する - ORDER BY句の発現#1は、GROUP BYではありません

[はじめに]環境
  システム環境:テンセントクラウド+ 5.7.18 + Navicatは11.2.7(クライアント)

 

[説明]ケース

朝の更新文の実行エラーの分析:

使用Navicatは11.2.7バージョンが実行エラー
のUPDATE shx_xxx.user_xxxセットroxx_id = 'xxxxxxxxxxxxxxxxxx0001' WHERE usxx_id = 'xxxxxxxxxxxxxxxxxx35'。

报错信息:
[のErr] 1055 - ORDER BY句の式#1は、GROUP BY句ではなく、非凝集カラム含ま
GROUP BY節内の列に機能的に依存しない「information_schema.PROFILING.SEQを」;
これはsql_modeの= ONLY_FULL_GROUP_BYと互換性がありません。

 

[分析]

むしろ奇妙な、文によって順序によって、クエリで使用された場合、エラーが通常である、ONLY_FULL_GROUP_BYいないグループとの簡単な更新文と条件をエラーメッセージのプロンプトをチェック

ビューの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
のMySQL 5.7.4の新バージョンをONLY_FULL_GROUP_BYパラメータを:グループのための集計BY操作、SELECTの列は、GROUP BYに表示されていない場合、カラムは、GROUP BY句ではないので、次にSQLは、合法的ではありません。

しかし、通常の使用のワークベンチツールのアップデート、ユニバーサル追跡ログ(general_log)は、クエリの使用は更新時に操作をinformation_schema.PROFILINGことを発見した、SQLビュー消費情報の記録が実行され、クエリは、このようにエラーを生じさせる、ONLY_FULL_GROUP_BYパラメータの制限を満たしていません

「%ゲン%」のような変数を表示します。
SETグローバルgeneral_log = 1;
更新XXXXX SET XXXX;
SETグローバルgeneral_log = 0;
「%ゲン%」のような表示変数;「」「観察するパラメータ、またはログを大量に閉じる必要があります情報

2020-01-08T15:20:47.934694 + 08:00 2605922クエリSHOW GLOBAL STATUS
2020-01-08T15:20:48.837771 + 08:00 2608143クエリ  SET PROFILING = 1
2020-01-08T15:20:48.840037 + 08:00 2608143クエリSHOWのSTATUS
2020-01-08T15:20:48.845610 + 08:00 2608143クエリのSHOW STATUS
2020-01-08T15:20:48.853304 + 08:00 2608143 usxx_id =」クエリUPDATE shx_xxx.user_xxx SETのroxx_id = 'xxxxxxxxxxxxxxxxxx0001' xxxxxxxxxxxxxxxxxx35' ;
2020-01-08T15:20:48.857803 + 08:00 2608143クエリのSHOW STATUS
2020-01-08T15:20:48.863344 + 08:INFORMATION_SCHEMA.PROFILING GROUP BY QUERY_ID FROM 00 2608143クエリSELECT QUERY_ID、SUM(DURATION)AS SUM_DURATION
2020- 01-08T15:20:48.867054 + 08:00 2608143クエリ ``期间、CONCAT AS SELECT状態として``状态、ROUND(SUM(DURATION)、7)(ROUND(SUM(DURATION)/0.000846*100,3)、 '%') ``百分比AS
WHERE INFORMATION_SCHEMA.PROFILING FROM QUERY_ID = 39 GROUP BY STATE ORDER BY SEQ

 

 

[概要]

使用Navicatは11.2.7バージョンの実行エラー、使用Navicatは12.1.8正しく、仕事に使用するワークベンチツールが正しく、それはNavicatは、ワークベンチ、SQLyogのツールの新バージョンを使用することをお勧めします。

もちろん、パラメータはsql_modeのを避けるに応じて変更することができますが、SQLのONLY_FULL_GROUP_BY特徴が書かれたOracleのSQL文に似た文言を標準化し、特別な要件は、(ビジネスはSQLスクリプトを変更することはできません)が存在しないが、回避操作のパラメータを変更することは推奨されません。

おすすめ

転載: www.cnblogs.com/zetanchen/p/12167437.html