2011-05-04 38 views
9

Tôi đang cố gắng nhập tệp mysqldump qua dòng lệnh, nhưng tiếp tục gặp lỗi. Tôi đổ các tập tin từ máy chủ khác của tôi sử dụng:Mysql ERROR tại dòng 1153: Lệnh không xác định ''

mysqldump -u XXX -p database_name > database.sql 

Sau đó, tôi cố gắng để nhập khẩu các tập tin với:

mysql -u XXX -p database_name < database.sql 

Nó tải một phần nhỏ và sau đó bị mắc kẹt. Các lỗi tôi nhận được là:

ERROR at line 1153: Unknown command '\''. 

Tôi đã kiểm tra dòng trong file với:

awk '{ if (NR==1153) print $0 }' database.sql >> line1153.sql 

và nó sẽ xảy ra là hơn 1MB về kích thước, chỉ dành riêng cho dòng đó.

Bất kỳ ý tưởng nào có thể xảy ra ở đây?

Trả lời

17

Bạn có các đốm màu nhị phân trong DB của mình, hãy thử thêm --hex-blob vào câu lệnh mysqldump của bạn.

+1

Điều này đã hiệu quả! Cám ơn rất nhiều. – Chris

+2

tôi có cùng một vấn đề nhưng - hex-blob không hoạt động. bất kỳ giải pháp nào khác? thx – Jon

3

Bạn biết những gì đang xảy ra - bạn có thêm một dấu nháy đơn trong SQL của bạn O

Nếu bạn có 'awk', bạn có thể có 'vi', mà sẽ mở tập tin line1153.sql của bạn một cách dễ dàng và cho phép bạn tìm giá trị trong cơ sở dữ liệu gây ra sự cố.

Hoặc ... Đường có thể lớn vì có chứa nhiều hàng. Bạn cũng có thể sử dụng tùy chọn --skip-extended-insert cho mysqldump để mỗi hàng có một câu lệnh chèn riêng biệt.

Chúc may mắn.

2

Tôi gặp vấn đề tương tự vì tôi có các ký tự tiếng Trung trong cơ sở dữ liệu của mình. Dưới đây là những gì tôi tìm thấy từ một số diễn đàn Trung Quốc và nó đã làm việc cho tôi.

mysql -u[USERNAME] -p[PASSWORD] --default-character-set=latin1 
[DATABASE_NAME] < [BACKUP_SQL_FILE.sql] 
0

Nếu vẫn thất bại, hãy sử dụng MySQLWorkbench để thực hiện việc nhập. Điều này giải quyết vấn đề tương tự đối với tôi.

1

Tôi nghĩ rằng bạn cần phải sử dụng path/to/file.sql thay vì path\to\file.sql

Ngoài ra, database < path/to/file.sql không làm việc cho tôi vì một lý do - Tôi đã phải sử dụng use database;source path/to/file.sql;.

+0

Thử nghiệm dựa trên câu trả lời này xác nhận với tôi rằng đây là nguồn gốc của một loạt các thông báo lỗi phát sinh khi tôi sử dụng d: \ path \ to \ file.sql trên cài đặt Windows của CLI MySQL, điều này khiến tôi rất bối rối , kể từ khi nó xuất hiện ngay cả trên một lệnh tee, trong đó thiết lập một đường dẫn đầu ra. Tôi nghi ngờ những lưu giữ tương tự cho bất kỳ đường dẫn nào được chỉ định trong CLI trên một cài đặt Windows. –

0

Gần đây tôi đã có một vấn đề tương tự, nơi tôi đã thực hiện một bãi chứa sql trên một máy Windows và cố gắng để cài đặt nó trên một máy Linux. Tôi đã một file SQL khá lớn và lỗi của tôi đã xảy ra tại dòng 3455360. tôi đã sử dụng lệnh sau đây để sao chép tất cả các văn bản lên đến điểm mà tôi đã nhận được một lỗi:

sed -n '1, 3455359p' < sourcefile.sql > destinationfile.sql

này sao chép tất cả các mã tốt vào tệp đích. Tôi đã xem một vài dòng cuối cùng của tệp đích và thấy rằng đó là một lệnh SQL hoàn chỉnh (Dòng cuối cùng kết thúc bằng dấu ';') vì vậy tôi đã nhập mã tốt và không nhận được bất kỳ lỗi nào.

Sau đó tôi đã xem phần còn lại của tệp có khoảng 20 dòng.Nó chỉ ra rằng việc xuất khẩu có thể không hoàn thành b/c Tôi thấy đoạn mã php sau ở cuối mã:

Array 
(
    [type] => 1 
    [message] => Maximum execution time of 300 seconds exceeded 
    [file] => C:\xampp\htdocs\openemr\phpmyadmin\libraries\Util.class.php 
    [line] => 296 
) 

Tôi đã xóa mã php vi phạm và nhập phần còn lại của cơ sở dữ liệu.

0

Tôi có ký tự đặc biệt trong các tên bảng, chẳng hạn như _\ và nó cung cấp lỗi khi cố gắng nhập các bảng đó. tôi đã sửa nó bằng cách thay đổi \ thành \\ trong sql bị bán phá giá. tên bảng của tôi nơi như rate_\ và tôi sử dụng lệnh này để sửa chữa bãi:

sed 's._\\._\\\\.g' dump.sql > dump2.sql 

tôi đã không thay thế tất cả những dấu xồ nguợc, bởi vì tôi đã không chắc chắn nếu có một số dấu chéo ngược ở đâu đó trong cơ sở dữ liệu mà không cần phải thay thế.

ký tự đặc biệt trong tên bảng sẽ được chuyển thành @ khi đăng nhập tên tệp. đọc http://dev.mysql.com/doc/refman/5.5/en/identifier-mapping.html

Các vấn đề liên quan