Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mã lỗi:1005. Không thể tạo bảng '...' (errno:150)

Mã lỗi:1005 - có một tham chiếu khóa chính không chính xác trong mã của bạn

Thông thường, đó là do trường khóa ngoại được tham chiếu không tồn tại. Có thể là bạn mắc lỗi đánh máy, hoặc trường hợp kiểm tra phải giống nhau hoặc có sự không khớp về loại trường. Các trường được liên kết với khóa ngoại phải khớp chính xác với các định nghĩa.

Một số nguyên nhân đã biết có thể là:

  1. Hai loại trường chính và / hoặc kích thước không khớp chính xác. Ví dụ:nếu một là INT(10) trường khóa cần phải là INT(10) cũng như không phải INT(11) hoặc TINYINT . Bạn có thể muốn xác nhận kích thước trường bằng cách sử dụng SHOW CREATE TABLE bởi vì Trình duyệt truy vấn đôi khi sẽ chỉ hiển thị trực quan INTEGER cho cả INT(10)INT(11) . Bạn cũng nên kiểm tra xem một tài khoản không phải là SIGNED và cái kia là UNSIGNED . Cả hai đều phải giống hệt nhau.
  2. Một trong những trường khóa mà bạn đang cố gắng tham chiếu không có chỉ mục và / hoặc không phải là khóa chính. Nếu một trong các trường trong mối quan hệ không phải là khóa chính, bạn phải tạo chỉ mục cho trường đó.
  3. Tên khóa ngoại trùng với một khóa đã tồn tại. Kiểm tra xem tên khóa ngoại của bạn có phải là duy nhất trong cơ sở dữ liệu của bạn không. Chỉ cần thêm một vài ký tự ngẫu nhiên vào cuối tên khóa của bạn để kiểm tra điều này.
  4. Một hoặc cả hai bảng của bạn là MyISAM bàn. Để sử dụng khóa ngoại, cả hai bảng phải là InnoDB . (Trên thực tế, nếu cả hai bảng đều là MyISAM thì bạn sẽ không nhận được thông báo lỗi - nó sẽ không tạo ra khóa.) Trong Trình duyệt truy vấn, bạn có thể chỉ định loại bảng.
  5. Bạn đã chỉ định một tầng ON DELETE SET NULL , nhưng trường khóa liên quan được đặt thành NOT NULL . Bạn có thể khắc phục điều này bằng cách thay đổi tầng của bạn hoặc đặt trường để cho phép NULL giá trị.
  6. Đảm bảo rằng các tùy chọn Bộ mã và Đối chiếu đều giống nhau ở cấp bảng cũng như cấp trường riêng lẻ cho các cột chính.
  7. Bạn có một giá trị mặc định (nghĩa là, mặc định =0) trên cột khóa ngoại của mình
  8. Một trong các trường trong mối quan hệ là một phần của khóa kết hợp (tổng hợp) và không có chỉ mục riêng của nó. Mặc dù trường có chỉ mục là một phần của khóa tổng hợp, bạn phải tạo chỉ mục riêng cho chỉ trường khóa đó để sử dụng nó trong một ràng buộc.
  9. Bạn có lỗi cú pháp trong ALTER của mình hoặc bạn đã nhập sai một trong các tên trường trong mối quan hệ
  10. Tên khóa ngoại của bạn vượt quá độ dài tối đa là 64 ký tự.

Để biết thêm chi tiết, hãy tham khảo: Số lỗi MySQL 1005 Không thể tạo bảng



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để chuyển đổi số trong tuần thành ngày?

  2. Cách lọc kết quả SQL trong một quan hệ có-nhiều-qua

  3. LEN () Tương đương trong MySQL là gì?

  4. Lỗi khi tải Mô-đun MySQLdb 'Bạn đã cài đặt mysqlclient hay MySQL-python?'

  5. Nhập từ và xuất sang tệp bằng dòng lệnh MySQL