2016-09-02 4 views
0

私はmysqlデータベースに直接保存したい大きなサイズの配列を持っています。保存する前に、json_encodeを使用して配列をエンコードしますが、データを保存しようとするたびにエラーが発生します。PHPを使ってmysqlデータベースに配列を保存する(json_encode)

CDbCommand failed to execute the SQL statement: SQLSTATE[08S01]: Communication link failure: 1153 Got a packet bigger than 'max_allowed_packet' bytes. 

私はな/etc/my.cnfでのmax_allowed_pa​​cket値を大きくしても、MySQLサービスを再起動しますが、それdoesntのはうまく!! xamp/mysql/bin/my.cnf

+1

それが役立つかもしれない:) http://stackoverflow.com/questions/5688403/how-to-check-and-set-max-allowed-packet-mysql-variable http://stackoverflow.com/questions/8062496/how-to-change-max-allowed-packet-size – Elangovan

+0

このデータはどれだけ大きいですか?そして、それを保存しようとしているPHP/SQLコードはどうなっていますか? – Simba

答えて

1

JSONのサイズが問題になる場合は、列ブロブ作り、その後、圧縮してみてください(とSELECT伸長によって)可能性がJSON文字列を

max_allowed_packet='required size' 
net_buffer_length='required size' 
1

からmax_allowed _packetnet_buffer_lengthを変更してみてくださいbzipで:

http://php.net/manual/en/function.bzcompress.php

これは、SELECTコマンドのフィールドが検索不可能作るんので、あなたは、SQLを経由して文字列を検索する必要がある場合、それは働くつもりではありません。

関連する問題