MySQL の最大許容パケット数を超過

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Fisheye および Crucible は除く

問題

次のうちの 1 つ以上が観察される。

  • プラグインをインストールまたはアップグレードできない
  • Universal Plugin Manager をアップグレードできない
  • サイズの大きなページを保存できない
  • 添付ファイルをアップロードできない (添付ファイルをデータベースに保存している場合)

atlassian-confluence.log: に次のエラーが表示される場合もあります。

ERROR [pool-6-thread-3] [sf.hibernate.util.JDBCExceptionReporter] logExceptions Packet for query is too large (1889999 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
Cause:
java.lang.RuntimeException: There was a problem evicting or flushing a PluginData object
at com.atlassian.confluence.plugin.persistence.hibernate.HibernatePluginDataDao.saveOrUpdate(HibernatePluginDataDao.java:65)
caused by: net.sf.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
at net.sf.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:90)
caused by: java.sql.BatchUpdateException: Packet for query is too large (1238730 > 1048576). You can change this value on the server by setting the max_allowed_packet' variable.
at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1213)

原因

デフォルトの MySQL パケット サイズ設定は、Confluence データベースに大部分のアドオンをインストールするのに十分なサイズではありません。プラグイン データ、添付ファイル、およびサイズの大きなページ ボディは、多くの場合、デフォルトの制限である 1 MBを超えることがあります。詳細は、以下のページを参照してください。

http://dev.mysql.com/doc/refman/5.6/en/packet-too-large.html

ソリューション

MySQL のパケット サイズをより大きな値 (256 MB) に設定して、MySQL Server を再起動します。256 MB は、大部分の場合に対応するのに十分な大きさのはずです。

shell> mysqld --max_allowed_packet=256M

または、MySQLの my.cnfファイル (Windows OS では my.ini という名前が多い) を編集することで、MySQL サーバの設定で同じことを行うこともできます。ファイル内で [mysqld] セクションを見つけ、以下のパラメータを追加あるいは修正します。

[mysqld]
...
max_allowed_packet = 256M
...

(i) 上記の変更を有効にするには、MySQLサービスを必ずに再起動してください。詳細は、MySQL のマニュアル (http://dev.mysql.com/doc/refman/5.0/en/packet-too-large.html) を参照してください。

注意:

データベースを停止できない場合は、代わりに最大許容パケットパラメータの値を動的に設定できます。この操作を行うには、次の手順を実行します。

  1. root ユーザーとしてログインします
  2. 値は '256M' ではなく、整数で設定する必要があります。256Mは、256*1024*1024、つまり 268435456 に相当します。
  3. mysql> SET GLOBAL max_allowed_packet=268435456;
  4. これが適用されていることを確認するには:
    1. Relogin to your mysql client.
    2. mysql> SELECT @@max_allowed_packet;
  5. Confluence インスタンスを再起動します

変更を永続的に維持するには、上記の説明の通り、 /etc/my.cnf ファイルを更新する必要があります。

最終更新日: 2016 年 2 月 26 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.