Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao tôi cần xóa nhóm kết nối mỗi khi triển khai lại?

Nguyên nhân gốc rễ của bạn, PoolingException: javax.resource.spi.LocalTransactionException: Communications link failure có liên quan đến lỗi Glassfish này , giải thích (trong tab nhận xét ở dưới cùng) rằng bạn có thể cần phải làm mới các kết nối không hợp lệ của mình.

Nhận xét lỗi của Jagadish nói để kiểm tra loại xác thực kết nối của bạn. Nếu nó được đặt thành "autocommit" (mặc định), trình điều khiển JDBC có thể lưu vào bộ đệm dữ liệu xác thực kết nối trước đó và không có tương tác cơ sở dữ liệu thực tế nào xảy ra trong quá trình xác thực kết nối trong tương lai.

Để giải quyết sự cố, hãy đặt connection-validation-method="table"validation-table-name="any_table_you_know_exists" (thay thế any_table_you_know_exists với tên của bất kỳ bảng hiện có). Làm điều này buộc các kết nối phải nói chuyện với cơ sở dữ liệu thay vì bộ nhớ cache; nếu kết nối không hợp lệ, nó sẽ bị loại bỏ và được tạo lại. Bạn cũng có thể cần chỉ định is-connection-validation-required="true" .

Các bài viết giúp cấu hình bổ sung:

  1. Bài viết này cũng giải thích vấn đề một cách chi tiết.
  2. Bài viết trên blog Oracle của Jagadish về chủ đề này có nhiều thông tin hơn.
  3. Bài viết giải thích chi tiết Xác thực kết nối JDBC của Glassfish.

Văn bản từ blog của 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

Lưu ý rằng mã mẫu đề cập đến sys.systables , là một bảng MS SQL được đảm bảo tồn tại. Đối với Oracle, hãy tham khảo bảng đảm bảo dual . Đối với MySQL, tạo bảng 1 cột chỉ cho mục đích xác thực; chơi nó an toàn và điền trước bảng bằng cách chèn một hàng dữ liệu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tính tổng cho đến thời điểm nhất định - MySql

  2. Trong MySQL, 'USE INDEX' không hoạt động nhưng 'FORCE Index' có vẻ hoạt động tốt

  3. thông báo qua email về ngày hết hạn

  4. Thay đổi múi giờ kết nối trong MySQL

  5. mysql_query () mong đợi tham số 2 là tài nguyên, chuỗi được cung cấp trong