Mysql5.7中使用group concat函數(shù)數(shù)據(jù)被截斷的問題完美解決方法
前天在生產(chǎn)環(huán)境中遇到一個問題:使用 GROUP_CONCAT
函數(shù)select出來的數(shù)據(jù)被截斷了,最長長度不超過1024字節(jié),開始還以為是navicat客戶端自身對字段長度做了限制的問題。后面故意重新INSERT了一個字段長度超1024字節(jié)的數(shù)據(jù),但是navicat能完整展示出來,所以就排除了navicat的問題。
然后想到1024這個熟悉的數(shù)字,會不會是C++框架在接收MySQL通過socket傳輸過來的數(shù)據(jù)時被處理了呢?于是手工在日志中打印這個字段,發(fā)現(xiàn)即使數(shù)據(jù)長度超過1024字節(jié)仍然是可以完整顯示的。
1 查找原因
至此,只能從SQL語句出發(fā)了。網(wǎng)上搜了下 GROUP_CONCAT 數(shù)據(jù)截斷的問題,答案都指向了 group_concat_max_len 這個參數(shù),它的默認值正好是1024??梢灾苯釉跀?shù)據(jù)庫中通過下面的命令查看這個默認值:
mysql> show variables like 'group_concat_max_len'; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | group_concat_max_len | 1024 | +----------------------+-------+ 1 row in set (0.00 sec) mysql>
MySQL官方手冊 對它的定義是 The maximum permitted result length in bytes for the GROUP_CONCAT() function
. ,也就是它限制了 GROUP_CONCAT
數(shù)據(jù)的長度。
2 解決問題
只要調(diào)整 group_concat_max_len
到最大值就行了,官方在MySQL5.7的手冊中給出了如下定義:
由于BZ的測試虛擬機MySQL5.7.19是64位的,所以可以通過下面這兩種方法配置好 group_concat_max_len 為最大值``:
#### 方法一:修改MySQL配置文件my.cnf,在[mysqld]節(jié)點中添加 group_concat_max_len = 18446744073709551615 #### 方法二:直接控制臺上設置立即生效 -- 【必須操作】更改全局配置---- SET GLOBAL group_concat_max_len=18446744073709551615; -- 【可選操作】使配置在當前會話中也立即生效,其它已經(jīng)登錄的會話終端需要重啟生效---- SET SESSION group_concat_max_len=18446744073709551615;
3 測試效果
這里采用的是第二種方法,通過執(zhí)行 SELECT LENGTH(GROUP_CONCAT(Fremark)) FROM account;
結(jié)果的對比,可以發(fā)現(xiàn)已經(jīng)成功解決了MySQL5.7中使用GROUP_CONCAT
數(shù)據(jù)被截斷的問題。
總結(jié)
以上所述是小編給大家介紹的Mysql5.7中使用group concat函數(shù)數(shù)據(jù)被截斷的問題完美解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
MySQL Hints控制查詢優(yōu)化器的選擇問題小結(jié)
MySQL Hints是一種強大的工具,可以幫助我們解決復雜的查詢性能問題,然而,它們應該謹慎使用,并且總是與徹底的測試和驗證相結(jié)合,本文介紹MySQL Hints控制查詢優(yōu)化器的選擇,感興趣的朋友一起看看吧2024-06-06MySQL數(shù)據(jù)庫查詢性能優(yōu)化的4個技巧干貨
這篇文章主要為大家介紹了MySQL數(shù)據(jù)庫查詢性能優(yōu)化的4個技巧干貨詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-08-08Mysql?8.4.0?結(jié)合?Docker?搭建GTID主從復制及傳統(tǒng)主從復制詳解
這篇文章主要介紹了Mysql?8.4.0?結(jié)合?Docker?搭建GTID主從復制,以及傳統(tǒng)主從復制,本文給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-06-06MySQL查看數(shù)據(jù)庫連接數(shù)的方法
本文主要介紹了MySQL查看數(shù)據(jù)庫連接數(shù)的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-08-08