Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengapa saya perlu membersihkan kumpulan koneksi setiap kali saya menerapkan ulang?

Akar penyebab Anda, PoolingException: javax.resource.spi.LocalTransactionException: Communications link failure terkait dengan bug Glassfish ini , yang menjelaskan (di tab komentar di bagian bawah) bahwa Anda mungkin perlu menyegarkan koneksi yang tidak valid.

Komentar bug oleh Jagadish mengatakan untuk memeriksa jenis validasi koneksi Anda. Jika disetel ke "autocommit" (default), driver JDBC mungkin menyimpan data validasi koneksi sebelumnya, dan tidak ada interaksi database aktual yang akan terjadi selama validasi koneksi mendatang.

Untuk mengatasi masalah, setel connection-validation-method="table" dan validation-table-name="any_table_you_know_exists" (ganti any_table_you_know_exists dengan nama tabel yang ada). Melakukan hal ini memaksa koneksi untuk berbicara ke database alih-alih cache; jika koneksi tidak valid, itu akan dijatuhkan dan dibuat ulang. Anda mungkin juga perlu menentukan is-connection-validation-required="true" .

Artikel untuk membantu dengan konfigurasi tambahan:

  1. Artikel ini juga menjelaskan masalahnya secara detail.
  2. Artikel Blog Oracle Jagadish tentang topik ini memiliki info lebih lanjut.
  3. Artikel menjelaskan Validasi Koneksi JDBC Glassfish secara detail.

Teks dari blog Jagadish:

AS_INSTALL_ROOT/bin/asadmin set domain.resources.jdbc-connection-pool.DerbyPool.is-connection-validation-required=true
domain.resources.jdbc-connection-pool.DerbyPool.is-connection-validation-required = true

AS_INSTALL_ROOT/bin/asadmin set domain.resources.jdbc-connection-pool.DerbyPool.connection-validation-method=table
domain.resources.jdbc-connection-pool.DerbyPool.connection-validation-method = table

bin/asadmin set domain.resources.jdbc-connection-pool.DerbyPool.validation-table-name=sys.systables
domain.resources.jdbc-connection-pool.DerbyPool.validation-table-name = sys.systables

Perhatikan bahwa kode contoh mengacu pada sys.systables , yang merupakan tabel MS SQL yang dijamin ada. Untuk Oracle, lihat tabel dijamin dual . Untuk MySQL, buat tabel 1 kolom hanya untuk tujuan validasi; mainkan dengan aman dan isi tabel terlebih dahulu dengan memasukkan satu baris data.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mencocokkan nama tabel dengan tabel acara

  2. Query Mysql GROUP by dan ORDER by

  3. Kueri ketika parameter tidak ada Django

  4. Emacs dan MySQL di Mac

  5. Membangun aplikasi Android untuk menjalankan PHP dan MySQL di Tablet Android