ホームページ >データベース >mysql チュートリアル >データベース操作における「接続が閉じられた後は操作は許可されません」例外を処理する方法?
接続が閉じられた後は操作は許可されません例外
説明:
この例外は、データベースへの接続が閉じられた後に操作を実行しようとします。根本的な原因は、多くの場合、接続タイムアウトの問題です。
考えられる原因:
解決策:
接続プーリング
Hibernate のデフォルトの接続プールは運用環境には適していないため、サードパーティの接続プーリング ライブラリが Hibernate のデフォルトの接続プールの代わりに使用されていることを確認してください。 C3P0 または DBCP の使用を検討してください。
サーバー側のタイムアウト構成
接続が早期に終了しないように、MySQL の wait_timeout パラメータをより高い値に調整します。
クライアント側のタイムアウト構成
接続プールの maxConnectionAge プロパティと maxIdleTime プロパティを増やして、接続の有効期間を延長します。
C3P0 構成の例:
<code class="xml"><property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> <property name="c3p0.acquire_increment">1</property> <property name="c3p0.idle_test_period">100</property> <!-- seconds --> <property name="c3p0.max_size">100</property> <property name="c3p0.max_statements">0</property> <property name="c3p0.min_size">10</property> <property name="c3p0.timeout">1800</property> <!-- seconds --> </code>
追加の注意:
「c3p0.testConnectionOnCheckout=true」プロパティを使用する前に接続をテストするように設定できますが、これはパフォーマンスに影響を与える可能性があります。
以上がデータベース操作における「接続が閉じられた後は操作は許可されません」例外を処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。