LOAD data 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à để 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 lập tức 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 hồ sơ 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 về MySQL đề xuất tăng các 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 data 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
con.query('SET GLOBAL connect_timeout=6000')

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 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 data local INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn

Xin vui lòng
1 Kiểm tra xem MySQL có đang chạy trên địa chỉ ***** không
2 Kiểm tra xem MySQL có thể truy cập được trên cổng 3306 không (lưu ý. 3306 là mặc định, nhưng điều này có thể được thay đổi)
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 máy khách nào có thể kết nối với máy chủ và từ máy nào)
4 Đảm bảo rằng bạn vừa cung cấp mật khẩu nếu cần vừa sử dụng đúng mật khẩu cho ***** kết nối từ địa chỉ máy chủ mà bạn đang kết nối từ đó

Đọ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 data local INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn

 

LOAD data 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 data 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 data 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 data local INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn
                   
LOAD data local INFILE Mất kết nối với máy chủ MySQL trong khi truy vấn
          

LOAD data 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 data 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 data 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 data 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 —

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

Điều gì gây ra lỗi “Mất kết nối với máy chủ MySQL trong khi truy vấn”? . Ví dụ: nếu bạn có một truy vấn dài cần nhiều thời gian để hoàn thành việc thực thi, MySQL sẽ ngắt kết nối tới máy chủ. when the connection between a client and the server exceeds the specified timeout value. For example, if you have a long query that takes a long time to complete the execution, MySQL drops the connection to the server.

Làm cách nào để khắc phục thời gian chờ kết nối trong MySQL?

Xảy ra lỗi kết nối hết thời gian chờ khi tường lửa của cơ sở dữ liệu 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 gặp lỗi này, hãy kiểm tra xem bạn đã thêm máy hoặc tài nguyên mà bạn đang kết nối từ đó vào danh sách các nguồn đáng tin cậy của cơ sở dữ liệu chưa .

Không thể kết nối lại với MySQL sau 1 lần thử). Máy chủ MySQL đã biến mất?

Máy chủ MySQL đã biến mất (lỗi 2006) có 2 nguyên nhân chính và cách khắc phục. Máy chủ đã hết thời gian chờ và đóng kết nối. Để khắc phục, hãy kiểm tra biến mysql wait_timeout trong my của bạn. tệp cấu hình cnf đủ lớn , ví dụ: wait_timeout = 28800.