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

Sự cố khi thêm Khóa ngoại bằng cách sử dụng Bảng thay thế với Cơ sở dữ liệu MYSQL hiện có - không thể thêm! Giúp đỡ!

Cả hai bảng đều là loại InnoDB?

Bảng công ty có chỉ mục trên company_id không?

Tôi đoán rằng bảng của bạn là MyISAM (mặc định nếu bạn chưa thay đổi cấu hình) và bạn không thể tạo các ràng buộc khóa ngoại trong MyISAM. Xem mô tả về TẠO BẢNG để có hai bảng.

Nếu cả hai bảng đều trống, hãy thả chúng và tạo lại chúng, chọn InnoDB làm công cụ. Bạn cũng có thể thêm các ràng buộc NGOẠI KHÓA trong (các) tập lệnh tạo bảng.

Từ MySQL Hướng dẫn Tham khảo :

@egervari:Điều gì sẽ xảy ra nếu bạn chạy điều này:

CREATE TABLE `test` (
  `company_id` bigint(20) NOT NULL,
  `module_id` bigint(20) NOT NULL,

  KEY  (`module_id`),
  KEY  (`company_id`),

  CONSTRAINT `test_fk_module`
    FOREIGN KEY (`module_id`)
    REFERENCES `module` (`module_id`),

  CONSTRAINT `test_fk_company`
    FOREIGN KEY (`company_id`)
    REFERENCES `company` (`company_id`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT

) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

Và nếu bạn chạy:

ALTER TABLE `company_to_module`
  ADD CONSTRAINT `company_to_module_fk_company` 
    FOREIGN KEY (`company_id`)
    REFERENCES `company` (`company_id`)
    ON DELETE RESTRICT
    ON UPDATE RESTRICT;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thay đổi dữ liệu của một ô trong mysql

  2. ĐẶT HÀNG MySQL BẰNG TRONG ()

  3. Lựa chọn tháng đơn giản của Laravel

  4. Lịch sử cơ sở dữ liệu

  5. Chiến lược sao lưu và phục hồi MySQL / MariaDB thành công