其實這篇的來由是延續昨天的 GROUP_CONCAT 用法,我沒想到 GROUP_CONCAT 出來的字串會有最大值的限制,以至於在某個頁面上,爬出來的 JSON 格式發現錯誤....。
查了一下 MySQL 的手冊才得知,GROUP_CONCAT 最大值預設是 1024 個字元。
因此,要改變這個最大值的設定,有兩種方法(恩...對我來說是兩種)
1. 修改 my.cnf 檔案,在 [mysqld] 的後面再加上 group_concat_max...
如果你是走這個方式,記得存檔後,重啟 MySQL。
2. 在程式端修改
因為我是用 node.js 在開發 web application,所以也就是搭配 co-mysql 的套件,反正各種 web 開發的程式語言大部份都有可以搭配的 mysql 連線跟使用方式,像我就是直接在程式寫下類似這樣的 query 就可以了:
yield $db.query("SET GLOBAL group_concat_max_len=6000");
完。
其實選擇 2. 的原因沒有其他的,只是覺得別人要 clone 這個專案時,我還要特地說明請他去修改 my.cnf ,我會覺得太煩雜而已。
這篇也寫得蠻清楚的: mysql 环境变量之 group_concat_max_len。
查了一下 MySQL 的手冊才得知,GROUP_CONCAT 最大值預設是 1024 個字元。
因此,要改變這個最大值的設定,有兩種方法(恩...對我來說是兩種)
1. 修改 my.cnf 檔案,在 [mysqld] 的後面再加上 group_concat_max...
[mysqld]
socket=/tmp/mysql.sock
group_concat_max_len=6000
group_concat_max_len=val,再填入你要的最大值。socket=/tmp/mysql.sock
group_concat_max_len=6000
如果你是走這個方式,記得存檔後,重啟 MySQL。
2. 在程式端修改
因為我是用 node.js 在開發 web application,所以也就是搭配 co-mysql 的套件,反正各種 web 開發的程式語言大部份都有可以搭配的 mysql 連線跟使用方式,像我就是直接在程式寫下類似這樣的 query 就可以了:
yield $db.query("SET GLOBAL group_concat_max_len=6000");
完。
其實選擇 2. 的原因沒有其他的,只是覺得別人要 clone 這個專案時,我還要特地說明請他去修改 my.cnf ,我會覺得太煩雜而已。
這篇也寫得蠻清楚的: mysql 环境变量之 group_concat_max_len。
沒有留言:
張貼留言
若你看的文章,時間太久遠的問題就別問了,因為我應該也忘了... XD