2010-10-02 23 views

Trả lời

3

nên được một cái gì đó dọc theo những dòng:

http://dev.mysql.com/doc/refman/5.5/en/error-types.html

'00' indicates success. 
'01' indicates a warning. 
'02' indicates “not found.” 
+7

Tôi không nghĩ rằng điều này là chính xác. Liên kết được cung cấp có vẻ là mã lỗi mysql. Một số điều tra bản thân mình cho thấy rằng mã lỗi 3 là một lỗi mysql nội bộ và mã lỗi 0 là thành công. Đó là những gì tôi đã tìm thấy cho đến nay anyway. – Arcterex

+4

Tôi nghĩ đây là mã lỗi 'mysql', trái với mã lỗi 'mysqldump'. – yoni

31

Taken từ khách hàng/mysqldump.c trong MySQL 5.1.59:

#define EX_USAGE 1 
#define EX_MYSQLERR 2 
#define EX_CONSCHECK 3 
#define EX_EOM 4 
#define EX_EOF 5 /* ferror for output file was got */ 
#define EX_ILLEGAL_TABLE 6 

lướt qua nguồn, EX_MYSQLERR dường được sử dụng chủ yếu cho các lỗi từ máy chủ, nhưng cũng trong trường hợp malloc không thành công. CONSCHECK có vẻ như là để kiểm tra tính nhất quán. EX_EOM được trả về cho một số cuộc gọi _alloc quá - "End Of Memory"?

8

Mã thoát 2 thường xảy ra khi bãi chứa không thể hoàn thành do các vấn đề đặc quyền; ví dụ: nếu người dùng không có đặc quyền LOCK TABLES hoặc mật khẩu đã cung cấp bị sai.

0

Lý do khác có thể là mật khẩu có ký tự quá đặc biệt, được sử dụng không thoát trên bảng điều khiển (vì bạn sử dụng mysqldump). Quá trình này cũng trả về mã lỗi 2. Tôi có vấn đề này theo thời gian. Thông số đóng gói ít nhất là trong dấu ngoặc kép/dấu ngoặc kép giúp thường xuyên: Thay vào đó -u... -p... và cứ như vậy, sử dụng "-u..." "-p..." sẽ loại bỏ nhiều sự cố. Tuy nhiên nó không phải là một giải pháp hoàn hảo (nếu cùng một loại dấu ngoặc kép được sử dụng).

Nó cũng có thể là sự cố phụ thuộc vào hệ điều hành. Ví dụ MS Windows sử dụng các biến, chẳng hạn như %MYVAR% dường như không thể thoát được (ít nhất một số nguồn như số PHP docu đề cập đến biến này).

2

Điều đáng lưu ý là nếu bạn sử dụng mysqldump trong hàm php exec, shell_exec hoặc system làm lệnh, nó sẽ trả về 02 mã thoát nếu bạn không có quyền ghi tệp vào vị trí đã chọn.

Trong lệnh trường hợp của tôi:

mysqldump '-uUSER' '-pPASS' DATABASE > /home/USER/LOCATION/dump.sql 

Khi gọi từ php đã không làm việc. Nó đã được giải quyết sau khi thêm quyền ghi thích hợp vào thư mục LOCATION.

Tôi giải quyết nó bằng cách kiểm tra những gì đã được gửi như đầu ra khi gọi lệnh:

myslqdump 

và sau nó:

mysqldump '-uUSER' '-pPASS' DATABASE 

Trong cả hai trường hợp lệnh cho phản ứng thích hợp trong lập luận thứ 2 của exec chức năng.

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