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

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 🙏

Làm thế nào giải quyết kết nối bị mất với máy chủ MySQL trong quá trình truy vấn?

Mở các tùy chọn Workbench MySQL. Kiểm tra xem giá trị thời gian chờ thời gian chờ SSH và DBMS chỉ được đặt thành một vài giây. Cố gắng tăng giá trị mặc định của thời gian chờ kết nối. Lưu cài đặt, đóng Workbench MySQL và mở lại kết nối để xem bạn có thể kết nối với cơ sở dữ liệu không.Check if the SSH Timeout and DBMS Timeout value is set to only a few seconds. Try to increase the default value of the connection timeouts. Save the settings, close the MySQL Workbench and reopen the connection to see if you are able to connect to the database.

Tại sao truy vấn bị mất kết nối với máy chủ MySQL?

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.commonly happens when you run a long or complex MySQL query that runs for more than a few seconds. To fix the error, you may need to change the timeout-related global settings in your MySQL database server.

Không thể kết nối máy chủ có thể không chạy kết nối bị mất với máy chủ MySQL trong quá trình truy vấn?

Thông thường có nghĩa là không có máy chủ MySQL chạy trên hệ thống hoặc bạn đang sử dụng tên tệp unix không chính xác hoặc số cổng TCP/IP khi cố gắng kết nối với máy chủ.Bạn cũng nên kiểm tra xem cổng TCP/IP bạn đang sử dụng chưa bị chặn bởi tường lửa hoặc dịch vụ chặn cổng.there is no MySQL server running on the system or that you are using an incorrect Unix socket file name or TCP/IP port number when trying to connect to the server. You should also check that the TCP/IP port you are using has not been blocked by a firewall or port blocking service.

Không thể kết nối với máy chủ MySQL khi hết thời gian?

Một lỗi kết nối đã xảy ra lỗi khi tường lửa của cơ sở dữ liệu sẽ không cho phép bạn kết nối với cơ sở dữ liệu từ máy hoặc tài nguyên cục bộ của bạn.Nếu bạn đang gặp lỗi này, hãy kiểm tra xem bạn đã thêm máy hoặc tài nguyên bạn đang kết nối với danh sách các nguồn đáng tin cậy của cơ sở dữ liệu.check that you have added the machine or resource you are connecting from to the database's list of trusted sources.