LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn

Sử dụng web2py và tôi đang chuyển từ phát triển sqlite sang sản xuất mysql, tôi đã quen với việc điền vào bảng trong khi khởi tạo cơ sở dữ liệu mới trực tiếp từ web2py lặp qua từng bản ghi

Có khoảng 50. 000 bản ghi với năm trường kiểu varchar và int

Chuyển sang mysql, tôi thấy rằng quy trình của mình không thành công do hết thời gian chờ nên tôi đã thử sử dụng LOAD DATA LOCAL INFILE và tôi đã thành công với một bộ thử nghiệm ngắn, vì vậy tôi đã tạo một bộ đầy đủ sau đó tải ok; . 9 MB

Nhưng vì một số lý do, tôi cần một trường bổ sung được tạo bằng cách ghép hai trường khác, trong mã gốc của tôi, tôi đã thiết lập mọi thứ để web2py tính toán trường cũ. Nhưng bây giờ tôi đang đưa dữ liệu trực tiếp vào và để tránh phải tính toán sau khi chèn, tôi đã tạo một bộ đầy đủ khác với tất cả các trường để kích thước tệp tăng lên khoảng 3. 3MB

Và bây giờ tôi gặp lỗi này ngay sau khi bắt đầu truy vấn. Tôi đã thử nhiều cách khác nhau nhưng cách duy nhất để thực hiện thao tác chèn thành công là giảm kích thước tệp, tôi đã thử điều chỉnh kết nối như thế này

mysql -hmysql.server -udido 'dido$db_here' -p --max_allowed_packet=16M --connect_timeout=20  --local-infile=1

không may mắn, và bây giờ tôi không còn lựa chọn nào khác

Câu hỏi của tôi là, có một số cài đặt cấu hình mà tôi có thể thử để cài đặt này chạy hay tôi nên chia đôi truy vấn? . 0000 bản ghi và 3. 3MB không phải là một kích thước lớn?

Nếu bạn dành thời gian để chạy nhiều truy vấn MySQL, bạn có thể bắt gặp Error Code: 2013. Lost connection to MySQL server during query. Bài viết này cung cấp một số gợi ý về cách tránh hoặc khắc phục sự cố

Tại sao điều này xảy ra

Lỗi này xuất hiện khi hết thời gian kết nối giữa máy khách MySQL và máy chủ cơ sở dữ liệu. Về cơ bản, mất quá nhiều thời gian để truy vấn trả về dữ liệu nên kết nối bị ngắt

Hầu hết công việc của tôi liên quan đến việc di chuyển nội dung. Các dự án này thường liên quan đến việc chạy các truy vấn MySQL phức tạp, mất nhiều thời gian để hoàn thành. Tôi thấy bảng wp_postmeta của WordPress đặc biệt rắc rối vì một trang web có hàng chục nghìn bài đăng có thể dễ dàng có vài trăm nghìn mục postmeta. Việc tham gia các tập dữ liệu lớn từ các loại bảng này có thể đặc biệt chuyên sâu

Tránh vấn đề bằng cách tinh chỉnh các truy vấn của bạn

Trong nhiều trường hợp, bạn có thể tránh hoàn toàn sự cố bằng cách tinh chỉnh các truy vấn SQL của mình. Ví dụ: thay vì nối tất cả nội dung của hai bảng rất lớn, hãy thử lọc ra các bản ghi mà bạn không cần. Nếu có thể, hãy thử giảm số lần tham gia trong một truy vấn. Điều này sẽ có thêm lợi ích là làm cho truy vấn của bạn dễ đọc hơn. Đối với mục đích của tôi, tôi nhận thấy rằng việc chuẩn hóa nội dung thành các bảng làm việc có thể cải thiện hiệu suất đọc. Điều này tránh thời gian chờ

Viết lại truy vấn không phải lúc nào cũng là tùy chọn nên bạn có thể thử các giải pháp thay thế phía máy chủ và phía máy khách sau đây

Giải pháp phía máy chủ

Nếu bạn là quản trị viên cho máy chủ MySQL của mình, hãy thử thay đổi một số giá trị. Tài liệu MySQL đề xuất tăng giá trị net_read_timeout hoặc connect_timeout trên máy chủ

Giải pháp phía khách hàng

Bạn có thể tăng giá trị thời gian chờ của máy khách MySQL nếu bạn không có quyền truy cập quản trị viên vào máy chủ MySQL

Bàn làm việc MySQL

Bạn có thể chỉnh sửa tùy chọn SQL Editor trong MySQL Workbench

  1. Trong menu ứng dụng, chọn Chỉnh sửa > Tùy chọn > Trình soạn thảo SQL
  2. Tìm phần Phiên MySQL và tăng giá trị thời gian chờ đọc kết nối DBMS
  3. Lưu cài đặt, khá MySQL Workbench và mở lại kết nối

LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn

điều hướng

Cách chỉnh sửa tùy chọn Navicat

  1. Giữ Control khi bấm vào một mục kết nối và chọn Thuộc tính kết nối > Chỉnh sửa kết nối
  2. Chọn tab Advanced và tăng giá trị Socket Timeout

Dòng lệnh

Trên dòng lệnh, sử dụng biến connect_timeout

tập lệnh Python

Nếu bạn đang chạy truy vấn từ tập lệnh Python, hãy sử dụng đối số kết nối.
______5

Tư vấn di chuyển từ Drupal sang WordPress

Bất kỳ phiên bản Drupal nào · Tất cả nội dung · Loại nội dung tùy chỉnh · SEO · Plugin

Di chuyển một trang web từ Drupal sang WordPress và cần một chuyên gia? . Cho dù bạn là cơ quan truyền thông cần chuyên gia cơ sở dữ liệu hay chủ sở hữu trang web đang tìm kiếm lời khuyên, tôi sẽ giúp bạn tiết kiệm thời gian và đảm bảo xuất nội dung chính xác

Trong bài đăng trên blog này, tôi sẽ chỉ cho bạn cách khắc phục sự cố và giải quyết các sự cố kết nối với Phiên bản Aurora MySQL RDS

 

Báo cáo sự cố  

Chúng tôi không thể thiết lập kết nối với một trong các kho lưu trữ dữ liệu Aurora MySQL RDS của chúng tôi. Tôi sử dụng MySQL Workbench cục bộ để kết nối với cơ sở dữ liệu AWS và tôi có thể kết nối với mọi cơ sở dữ liệu khác ngoại trừ cơ sở dữ liệu này.   Vui lòng tìm chi tiết lỗi bên dưới —

Mất kết nối với máy chủ MySQL trong khi truy vấn

LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn

Làm ơn.
1 Kiểm tra xem MySQL có đang chạy trên địa chỉ *****
2 Kiểm tra xem MySQL có thể truy cập được trên cổng 3306 không (lưu ý. 3306 là giá trị mặc định nhưng có thể thay đổi giá trị này)
3 Kiểm tra xem quản trị viên người dùng có quyền kết nối với ***** từ địa chỉ của bạn (Quyền MySQL xác định những máy khách nào có thể kết nối với máy chủ và .
4 Make sure you are both providing a password if needed and using the correct password for ***** connecting from the host address you’re connecting from.

Đọc qua phần trên có vẻ như có sự cố kết nối giữa máy khách MySQL và máy chủ Cơ sở dữ liệu và kết nối đã hết thời gian chờ trước khi trả về dữ liệu

 

Vấn đề có cụ thể đối với MySQL Workbench không?

  • Mở Tùy chọn bàn làm việc của MySQL
  • Kiểm tra xem giá trị Thời gian chờ SSH và Thời gian chờ DBMS có được đặt thành chỉ vài giây không
  • 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 MySQL Workbench 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

LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn

 

LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn

 

Bạn đã thử khởi động lại phiên bản Cơ sở dữ liệu chưa?

Khởi động lại một phiên bản CSDL sẽ khởi động lại dịch vụ công cụ cơ sở dữ liệu. Nó sẽ dẫn đến mất điện tạm thời mặc dù

LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn

Bạn cũng có thể khởi động lại phiên bản cơ sở dữ liệu bằng AWS CLI —

aws rds reboot-db-instance –db-instance-identifier databasename –profile live –region us-east-1


Đảm bảo kiểm tra trạng thái Cơ sở dữ liệu và xác nhận trạng thái 'Có sẵn'

LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn

 


Bạn đã kiểm tra Chỉ số Cloudwatch cho Cụm cơ sở dữ liệu chưa?

Bạn có thể kiểm tra các số liệu của cơ sở dữ liệu Cloudwatch – đặc biệt là DatabaseConnections, EngineUptime và UpdateThroughput như một bước khắc phục sự cố

LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn
                     
LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn
          

LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn
                       

Trong trường hợp này, có vẻ như sau khi động cơ khởi động lại vào ngày 11/8, đã xảy ra một số sự cố kết nối


Bạn đã kiểm tra Nhật ký lỗi cơ sở dữ liệu chưa?

Bạn có thể xem, tải xuống và theo dõi nhật ký cơ sở dữ liệu bằng bảng điều khiển Amazon RDS

LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn

Đây là nơi tôi có thể tìm ra nguyên nhân cốt lõi của lỗi kết nối. Rõ ràng là đã có lỗi trong nhật ký nêu rõ - 'lệnh init_connect không thành công'

LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn

Init_connect - Tham số này xác định một chuỗi để máy chủ chạy cho từng máy khách kết nối. Không có giá trị mặc định cho tham số này. Chuỗi bao gồm một hoặc nhiều câu lệnh SQL, được phân tách bằng dấu chấm phẩy

LOAD dữ liệu LOCAL INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn

Tôi đã đề cập đến một giá trị không chính xác  thông số 'init_connect' gây ra sự cố. Khi tôi đã sửa giá trị và áp dụng các thay đổi, tôi có thể kết nối với cơ sở dữ liệu

 

Kết luận  

Tóm tắt bài đăng trên blog này, có một số điều bạn có thể làm để khắc phục sự cố kết nối với cơ sở dữ liệu AWS RDS của mình trong khi cố gắng kết nối cục bộ qua MySQL Workbench —

Làm thế nào giải quyết mất kết nối với máy chủ MySQL trong khi truy vấn?

Mở Tùy chọn Bàn làm việc của MySQL. Kiểm tra xem giá trị Thời gian chờ SSH và Thời gian chờ DBMS có được đặt thành chỉ vài giây hay không . 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 MySQL Workbench 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.

Tại sao MySQL liên tục mất kết nối?

Lý do phổ biến nhất dẫn đến lỗi máy chủ MySQL đã biến mất là máy chủ đã hết thời gian chờ và đóng kết nối . Theo mặc định, máy chủ sẽ đó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 khởi động mysqld.

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

thông thường có nghĩa là không có máy chủ MySQL nào đang chạy trên hệ thống hoặc bạn đang sử dụng tên tệp ổ cắm Unix hoặc số cổng TCP/IP không chính xác 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 có bị chặn bởi tường lửa hoặc dịch vụ chặn cổng không. . 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 trên máy chủ cục bộ thông qua ổ cắm?

Thử kết nối với 127. 0. 0. 1 thay vì máy chủ cục bộ . 0. 0. 1 đầu nối TCP/IP sẽ được sử dụng. Vì vậy, khi đầu nối ổ cắm không hoạt động, hãy thử kết nối với 127. 0. 0. 1 thay vì.