Mysql5.7 のグループ連結関数を使用するときにデータが切り捨てられる問題に対する完璧な解決策

Mysql5.7 のグループ連結関数を使用するときにデータが切り捨てられる問題に対する完璧な解決策

一昨日、本番環境でGROUP_CONCAT関数を使用して選択したデータが切り捨てられ、最大長が1024バイトを超えないという問題が発生しました。最初は、フィールド長を制限しているNavicatクライアント自体の問題だと思いました。その後、意図的に 1024 バイトを超える長さのフィールドを再度 INSERT しましたが、Navicat では完全に表示できたため、Navicat の問題は除外されました。

そこで、おなじみの数字 1024 を思い浮かべました。MySQL からソケット経由で送信されたデータを受信するときに、C++ フレームワークが処理されたのでしょうか?そこで、このフィールドを手動でログに出力したところ、データ長が 1024 バイトを超えていても、完全に表示できることがわかりました。

1. 原因を見つける

この時点では、SQL ステートメントからのみ開始できます。 GROUP_CONCAT データの切り捨てに関する質問をオンラインで検索したところ、回答はすべて group_concat_max_len パラメータを指しており、そのデフォルト値はちょうど 1024 でした。次のコマンドを使用して、このデフォルト値をデータベースで直接表示できます。

mysql> 'group_concat_max_len' のような変数を表示します。
+----------------------+-------+
| 変数名 | 値 |
+----------------------+-------+
| グループ連結最大長 | 1024 |
+----------------------+-------+
セット内の 1 行 (0.00 秒)
マイSQL>

MySQL 公式マニュアルでは、 GROUP_CONCAT The maximum permitted result length in bytes for the GROUP_CONCAT() function

2. 問題解決

group_concat_max_len最大値に調整するだけです。公式の MySQL 5.7 マニュアルには、次の定義が記載されています。

BZ のテスト仮想マシン MySQL5.7.19 は 64 ビットなので、次の 2 つの方法で group_concat_max_len を最大値に設定できます。

#### 方法1: MySQL設定ファイルmy.cnfを変更し、[mysqld]ノードにgroup_concat_max_len = 18446744073709551615を追加します
#### 方法2: コンソールを直接設定してすぐに有効にする -- [必要な操作] グローバル構成を変更する ----
グローバル group_concat_max_len=18446744073709551615 を設定します。
-- [オプション操作] 現在のセッションで設定をすぐに有効にします。設定を有効にするには、ログインしている他のセッション端末を再起動する必要があります。
セッションgroup_concat_max_len=18446744073709551615を設定します。

3 テスト結果

ここでは 2 番目の方法を使用します。SELECT SELECT LENGTH(GROUP_CONCAT(Fremark)) FROM account;を実行し、結果を比較すると、MySQL 5.7 でGROUP_CONCATを使用した場合のデータの切り捨ての問題が正常に解決されていることがわかります。

要約する

上記は、Mysql5.7 でグループ連結関数を使用するときに発生するデータ切り捨ての問題に対する完璧な解決策です。お役に立てれば幸いです。ご質問がある場合は、メッセージを残していただければ、すぐに返信いたします。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • Mysql で group_concat の長さ制限を変更する方法
  • MySQLのgroup_concat()関数のソート方法についての簡単な説明
  • mysql group_concat() 関数の使用法の概要
  • MySQL 統計関数 GROUP_CONCAT の使用における落とし穴の分析
  • mysqlはgroup_concat()を使用して複数行のデータを1行に結合します。
  • MySQLのgroup_concat関数の詳細な理解
  • Mysql GROUP_CONCAT() 関数の使い方
  • MySQLはgroup_concat()関数に基づいて複数のデータ行を結合します

<<:  JavaScript におけるセミコロンの詳細

>>:  Apache Spark 2.0ジョブは完了するまでに長い時間がかかります

推薦する

HTML+CSSを使用してTG-visionホームページを作成する方法

今回はHTML+CSSレイアウトを使用して、TG-vision Shuanghui Mediaのホー...

Linuxのtopコマンド出力の詳細な説明

序文皆さんは Linux で top コマンドを使ったことがあると思います。私は Linux に触れ...

Oracle Rownum 書き込みに似た MySQL の詳細な例

Rownum は、Oracle での独自の書き込み方法です。Oracle では、rownum を使用...

Linux Centos でスクリプトを使用して Docker をインストールする方法

Dockerの主な機能は何ですか?現在、Docker には少なくとも次のアプリケーション シナリオが...

Linux でソフトウェア パッケージのバージョンをアップグレードする方法の詳細な説明

Linux環境で、特定のソフトウェア(パッケージ)がインストールされているかどうかを確認したい。 r...

CSS画像結合技術(スプライト画像)の詳しい説明

CSS画像結合技術1. 画像のステッチ画像ステッチング技術は、個々の画像を収集する技術です。画像の多...

開発効率の向上に役立つ 56 個の実用的な JavaScript ツール関数

目次1. デジタルオペレーション(1)指定された範囲内で乱数を生成する2. 配列操作(1)配列の順序...

デザイン理論: テキストの読みやすさと可読性

<br />少し前に、ビジネス上の必要性から、ラップトップに Souba をインストール...

テーブル適応とオーバーフローのいくつかの設定の詳細な説明

1. テーブル リセットの 2 つのプロパティ: ①border-collapse: collaps...

Web デザインにおける Less と More について語る (写真)

Less is More は多くのデザイナーのキャッチフレーズです。これは建築界の巨匠ルートヴィヒ...

MySQL ビューの原理と基本操作例

この記事では、例を使用して、MySQL ビューの原理と基本操作を説明します。ご参考までに、詳細は以下...

HTML メタタグの使用の概要 (推奨)

メタタグ機能METAタグは、HTMLタグのHEAD領域にある重要なタグです。文書の文字セット、使用言...

forループ内のvarの問題の解決

序文var は ES5 における変数宣言方法です。var で変数を宣言するとループ変数がグローバル変...

XHTML CSSを使用して正式なブログを書く

ブログの正式名称は「Web log」で、中国語で「ネットワークログ」を意味します。後にブログに短縮さ...

JavaScript でよく使われる 3 つの Web エフェクトの詳細な説明

目次1要素オフセットシリーズ1.1 オフセットの概要1.2 オフセットとスタイルの違い視覚領域クライ...