Máy chủ MySQL của MySQL đã biến mất khi cố gắng nhập một tệp kết xuất lớn


11

Tôi đang cố gắng nhập tệp kết xuất MySQL.

Tập tin được tạo trên máy chủ Linux, tôi đang cố gắng nhập trên windows

Tôi đăng nhập vào dòng lệnh và chạy:

SOURCE c:/dump.sql

Nhưng điều này dường như đã đưa ra một số vấn đề về bộ ký tự (cụ thể là với dấu ngoặc kép thông minh và dấu câu không chuẩn khác).

Tôi được gợi ý rằng tôi chạy:

mysql -u username -d dbase < c:\dump.sql

Khi tôi thử điều này, tôi nhận được lỗi

ERROR 2006 (HY000) at line 149351: MySQL server has gone away

Một chút googling cho rằng điều này là để làm với công tắc max_allowed_packet nhưng tôi đã thử điều này và nó đã không hoạt động. Có ai biết cái này có thể là gì không?

Nếu bất cứ ai có một gợi ý về vấn đề thiết lập nhân vật cũng sẽ hữu ích.


Bất kỳ thông tin phản hồi? [15 ký tự cần thiết để bình luận]
Mihai Limbăşan

Câu trả lời:


23

Bản năng đầu tiên của tôi sau khi đọc thông báo lỗi trong tiêu đề câu hỏi là đề nghị tăng max_allowed_packet. Bạn đã đề cập rằng bạn đã thử "chuyển đổi" nó và nó đã không hoạt động. Bạn có thể xác nhận rằng bạn đã sửa đổi chính xác tệp cấu hình của máy chủ không? Phrasing của bạn làm cho âm thanh giống như bạn đã cố sử dụng nó như một công tắc dòng lệnh trên dòng lệnh máy khách mysql.exe, điều này sẽ không khiến máy chủ thay đổi hành vi.

Vì vậy, trong ngắn hạn, những gì bạn nên cố gắng làm là xác định vị trí và chỉnh sửa tệp my.cnf mà máy chủ của bạn hiện đang sử dụng. Trong [mysqld]phần thay đổi cài đặt max_allowed_packet thành một cái gì đó như

[mysqld]
max_allowed_packet=32M

Đừng quên khởi động lại máy chủ sau khi thay đổi cấu hình.

Tôi đã sử dụng 32M (một giá trị lớn vô lý) làm ví dụ. Vì truy vấn của bạn có vẻ rất tuyệt vời, bạn nên thử giá trị này (hoặc thậm chí là 64M nếu bạn có đủ RAM) để xem liệu nó có hoạt động không.

Một tùy chọn khác là rời khỏi máy chủ nguyên trạng và thay đổi hành vi của máy khách được sử dụng để tạo kết xuất SQL. Nói với nó để giới hạn kích thước của các truy vấn riêng lẻ dưới 1 MB - đó cũng là một thủ thuật.

Để biết thêm chi tiết, xem B.1.2.10. Gói quá lớn trong hướng dẫn sử dụng MySQL.


1
Có, tôi chỉ đang thử chuyển đổi dòng lệnh. Lý do mà tôi nghĩ rằng nó có ảnh hưởng là vì nó đã cho một gói tối đa cho phép lỗi quá nhỏ khi tôi đặt nó thành một cái gì đó nhỏ hơn. Tôi sẽ thử đề nghị của bạn vào thứ Hai. Cảm ơn
Jeremy Pháp

Bạn được chào đón - Tôi gần như chắc chắn điều này sẽ hoạt động. Thật không may, giống như nhiều phần mềm khác (được, hầu hết) được viết trong 50 năm trở lại đây, các thông báo lỗi của MySQL có xu hướng hút và gây hiểu lầm nếu bạn chưa quen với cách làm việc của nhà phát triển :).
Mihai Limbăşan

Vui mừng khi nghe điều đó - vui chơi.
Mihai Limbăşan

Rất rất tuyệt vời. Tôi đã có vấn đề tương tự, đến đây để đặt câu hỏi và bam! giải quyết. @Mihai - bất cứ điều gì bạn được trả tiền; vẫn chưa đủ :)
Steven Evers

Giải pháp này đã giúp chúng tôi khi chúng tôi gặp lỗi này sau khi chuyển MySQL của chúng tôi từ localhost sang máy chủ từ xa. Cảm ơn rât nhiều!
Lea Cohen

1

Trên MySQL 5.7.24, đó là do cấu hình cũ từ MySQL 5.6

sql_mode=STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION. 

Tùy chọn bên dưới là bắt buộc nếu phiên bản SQL giống 5.7.5 trở lên.

sql_mode=TRADITIONAL

Ngoài ra, có hai tham số max_allowed_packet trong /etc/my.cnf, một tham số khác dành cho mysqldump. Xin lưu ý như vậy.

max_allowed_packet = <1G>

Cài đặt của tôi là trên CentOS7.


0

Bạn có thể truy cập phiên bản MySQL trên máy chủ windows từ hộp linux không?

Nếu vậy, bạn có thể chạy lệnh trên hộp linux, với công tắc -h để kết nối với máy chủ trên hộp windows không?

mysql -u username -d dbase -h <windows host> < dump.sql

Điều này có thể giải quyết các vấn đề về bộ ký tự của bạn , vì bạn đang sử dụng máy khách Linux trên hộp ban đầu để thực hiện nhập. (chỉ là phỏng đoán)


0

Nhật ký MySQL nói gì?

Đôi khi lỗi này được báo cáo trên máy khách nếu có lỗi không thể sửa trên máy chủ. Đây có thể là một chỉ số về hỏng đĩa của các bảng cơ sở dữ liệu.


-1

Tài khoản của bạn đã có mật khẩu chưa? Có lẽ bạn cần thêm công tắc -p:

mysql -u username -p -d dbase < c:\dump.sql

Ồ - có lẽ là không, vì dường như đã thất bại trong việc nhập hàng.
Brent
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.