Hướng dẫn lost connection to mysql server during query navicat - mất kết nối với máy chủ mysql trong khi truy vấn navicat

Khi bạn chạy các truy vấn MySQL, đôi khi bạn có thể gặp phải lỗi khi nói rằng bạn bị mất kết nối với máy chủ MySQL như sau:

Error Code: 2013. Lost connection to MySQL server during query

Lỗi trên thường xảy ra khi bạn chạy truy vấn MySQL dài hoặc phức tạp chạy trong hơn một vài giây.

Để sửa lỗi, bạn có thể cần thay đổi cài đặt toàn cầu liên quan đến thời gian chờ trong máy chủ cơ sở dữ liệu MySQL của bạn.

Tăng thời gian chờ kết nối từ dòng lệnh

Nếu bạn đang truy cập MySQL từ dòng lệnh, thì bạn có thể tăng số giây MYSQL sẽ đợi phản hồi kết nối bằng tùy chọn --connect-timeout.

Theo mặc định, MySQL sẽ đợi 10 giây trước khi phản hồi với lỗi thời gian chờ kết nối.

Bạn có thể tăng số lên 120 giây để chờ hai phút:

mysql -uroot -proot --connect-timeout 120

Bạn có thể điều chỉnh số 120 ở trên theo số giây bạn muốn chờ phản hồi kết nối.

Khi bạn ở bên trong bảng điều khiển mysql, hãy thử chạy lại truy vấn của bạn để xem liệu nó có hoàn thành thành công không.

Sử dụng tùy chọn --connect-timeout thay đổi các giây thời gian chờ tạm thời. Nó chỉ hoạt động cho phiên MySQL hiện tại mà bạn đang chạy, vì vậy bạn cần sử dụng tùy chọn mỗi khi bạn muốn thời gian chờ kết nối dài hơn.

Nếu bạn muốn thực hiện thay đổi vĩnh viễn cho biến hết thời gian kết nối, thì bạn cần điều chỉnh cài đặt từ máy chủ cơ sở dữ liệu MySQL hoặc công cụ GUI bạn đã sử dụng để truy cập vào máy chủ cơ sở dữ liệu của mình.

Hãy cùng xem cách thay đổi các biến toàn cầu trong thời gian chờ trong máy chủ cơ sở dữ liệu MySQL của bạn trước tiên.

Điều chỉnh các biến toàn cầu thời gian chờ trong máy chủ cơ sở dữ liệu MySQL của bạn

Cơ sở dữ liệu MySQL lưu trữ các biến toàn cầu liên quan đến thời gian chờ mà bạn có thể truy cập bằng truy vấn sau:

SHOW VARIABLES LIKE "%timeout";

Ở đây, kết quả từ cơ sở dữ liệu địa phương của tôi. Các biến được tô sáng là những biến bạn cần thay đổi để cho MySQL chạy các truy vấn dài hơn:

+-----------------------------------+----------+
| Variable_name                     | Value    |
+-----------------------------------+----------+
| connect_timeout                   | 10       |
| delayed_insert_timeout            | 300      |
| have_statement_timeout            | YES      |
| innodb_flush_log_at_timeout       | 1        |
| innodb_lock_wait_timeout          | 50       |
| innodb_rollback_on_timeout        | OFF      |
| interactive_timeout               | 28800    |
| lock_wait_timeout                 | 31536000 |
| mysqlx_connect_timeout            | 30       |
| mysqlx_idle_worker_thread_timeout | 60       |
| mysqlx_interactive_timeout        | 28800    |
| mysqlx_port_open_timeout          | 0        |
| mysqlx_read_timeout               | 30       |
| mysqlx_wait_timeout               | 28800    |
| mysqlx_write_timeout              | 60       |
| net_read_timeout                  | 30       |
| net_write_timeout                 | 60       |
| replica_net_timeout               | 60       |
| rpl_stop_replica_timeout          | 31536000 |
| rpl_stop_slave_timeout            | 31536000 |
| slave_net_timeout                 | 60       |
| wait_timeout                      | 28800    |
+-----------------------------------+----------+

Để thay đổi các giá trị biến, bạn có thể sử dụng truy vấn

mysql -uroot -proot --connect-timeout 120
0 như được hiển thị bên dưới:

SET GLOBAL connect_timeout = 600; 

Truy vấn trên phải điều chỉnh giá trị biến

mysql -uroot -proot --connect-timeout 120
1 thành
mysql -uroot -proot --connect-timeout 120
2 giây. Bạn có thể điều chỉnh các số khi bạn thấy phù hợp.

Điều chỉnh các biến thời gian chờ trong các tệp cấu hình MySQL của bạn

Ngoài ra, nếu bạn sử dụng tệp cấu hình MySQL để kiểm soát cài đặt kết nối của mình, thì bạn có thể chỉnh sửa tệp My.cnf [MAC] hoặc tệp My.ini [Windows] được sử dụng bởi kết nối MySQL của bạn.

Mở tệp cấu hình đó bằng Trình chỉnh sửa văn bản mà bạn chọn và cố gắng tìm các biến sau trong MySQLD:

[mysqld]
connect_timeout = 10
net_read_timeout = 30
wait_timeout = 28800
interactive_timeout = 28800

Các biến

mysql -uroot -proot --connect-timeout 120
3 và
mysql -uroot -proot --connect-timeout 120
4 không nên gây ra bất kỳ vấn đề nào vì chúng thường có 28800 giây [hoặc 8 giờ] làm giá trị mặc định của chúng.

Để ngăn chặn lỗi thời gian chờ, bạn cần tăng các giá trị biến

mysql -uroot -proot --connect-timeout 120
1 và
mysql -uroot -proot --connect-timeout 120
6. Tôi đề nghị đặt nó thành ít nhất
mysql -uroot -proot --connect-timeout 120
2 giây [10 phút]

Nếu bạn sử dụng các công cụ GUI MySQL như MySQL Workbench, phần tiếp theo ACE hoặc PHPMyAdmin, thì bạn cũng có thể tìm thấy các biến liên quan đến thời gian chờ được cấu hình bởi các công cụ này trong menu cài đặt hoặc tùy chọn của chúng.

Ví dụ: trong MySQL Workbench cho Windows, bạn có thể tìm thấy các cài đặt liên quan đến thời gian chờ trong Chỉnh sửa> Tùy chọn> Trình soạn thảo SQL như hiển thị bên dưới:Edit > Preferences > SQL Editor as shown below:

Nếu bạn sử dụng Mac, thì menu sẽ nằm trong MySQLworkBench> Tùy chọn> Trình chỉnh sửa SQL như được hiển thị bên dưới:MySQLWorkbench > Preferences > SQL Editor as shown below:

Nếu bạn sử dụng phần tiếp theo ACE như tôi, thì bạn có thể tìm thấy tùy chọn thời gian chờ kết nối trong menu Tùy chọn> Mạng.Preferences > Network menu.

Tại đây, một ảnh chụp màn hình từ cài đặt mạng ACE phần tiếp theo:

Đối với các công cụ GUI khác, bạn cần tự mình tìm tùy chọn. Bạn có thể thử tìm kiếm thuật ngữ

mysql -uroot -proot --connect-timeout 120
8 trong Google để tìm tùy chọn.

Và đó là bốn giải pháp bạn có thể cố gắng khắc phục kết nối MySQL bị mất trong quá trình vấn đề truy vấn.

Tôi hy vọng hướng dẫn này đã hữu ích cho bạn 🙏

Tại sao MySQL tiếp tục mất kết nối?

Lý do phổ biến nhất cho máy chủ MySQL đã biến mất là lỗi máy chủ đã hết thời gian và đóng kết nối.Theo mặc định, máy chủ đóng kết nối sau 8 giờ nếu không có gì xảy ra.Bạn có thể thay đổi giới hạn thời gian bằng cách đặt biến Wait_Timeout khi bạn bắt đầu mySQLD.the server timed out and closed the connection. By default, the server closes the connection after 8 hours if nothing has happened. You can change the time limit by setting the wait_timeout variable when you start mysqld.

Navicat cho MySQL là gì?

Navicat cho MySQL là giải pháp lý tưởng cho chính quyền và phát triển MySQL/Mariadb.Đây là một ứng dụng duy nhất cho phép bạn kết nối đồng thời với cơ sở dữ liệu MySQL và Mariadb.Tương thích với các cơ sở dữ liệu đám mây như Amazon RDS, Amazon Aurora, Oracle Cloud, Google Cloud và Microsoft Azure.a single application that allows you to connect to MySQL and MariaDB databases simultaneously. Compatible with cloud databases like Amazon RDS, Amazon Aurora, Oracle Cloud, Google Cloud and Microsoft Azure.

Bài Viết Liên Quan

Chủ Đề