Tài liệu MySQL là tài liệu tham khảo đầy đủ cho mã lỗi .
Mã lỗi bắt đầu từ 1000 là lỗi máy chủ . Chúng bao gồm các lỗi như:
-
Lỗi:1045 SQLSTATE:28000 (
ER_ACCESS_DENIED_ERROR
) Thông báo:Quyền truy cập bị từ chối đối với người dùng '% s' @ '% s' (sử dụng mật khẩu:% s) -
Lỗi:1049 SQLSTATE:42000 (
ER_BAD_DB_ERROR
) Thông báo:Cơ sở dữ liệu không xác định '% s'
Mã lỗi bắt đầu từ năm 2000 là lỗi ứng dụng khách . Chúng bao gồm các lỗi như:
-
Lỗi:2005 (
CR_UNKNOWN_HOST
) Thông báo:Máy chủ lưu trữ máy chủ MySQL không xác định '% s' (% d) -
Lỗi:2003 (
CR_CONN_HOST_ERROR
) Thông báo:Không thể kết nối với máy chủ MySQL trên '% s' (% d)
Tôi sẽ không liệt kê tất cả các lỗi có thể xảy ra, vì chúng đã được ghi lại và tôi không biết bạn cần xử lý lỗi nào. Ví dụ:lỗi 2001 và 2002 dành riêng cho các kết nối ổ cắm UNIX, có thể không liên quan đến nền tảng mục tiêu của bạn.
Đừng quên sử dụng PDO::errorCode()
và PDO::errorInfo()
thay vì chỉ là PDOException
tin nhắn.
Nhận xét của bạn về getCode()
- Không, có vẻ như nó không được hỗ trợ theo cách đó. Tôi đã kiểm tra nhanh var_dump()
một PDOException
. Thật không may, mã của nó đơn giản là "0" mặc dù mã lỗi và SQLSTATE được bao gồm trong thông báo ngoại lệ.
Exception ::getCode ()
là một phần của cơ sở Exception
, kể từ phiên bản PHP 5.1.0. Tùy thuộc vào việc triển khai trình điều khiển PDO tương ứng để sử dụng trường đối tượng này. Ít nhất đối với trình điều khiển MySQL, chúng dường như không.