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

mysql errno:150 “Ràng buộc khóa ngoại được tạo không chính xác” - MariaDB

Đầu tiên, có một số lỗi trong mã của bạn khiến việc kiểm tra hơi phức tạp. Thứ hai, hãy đảm bảo rằng bạn sử dụng cùng một bộ ký tự trong cả hai bảng, tôi đã thay đổi message_map thành utf8:

DROP TABLE message_map;
CREATE TABLE message_map (
  message_from varchar(15) NOT NULL,
  message_id varchar(15) NOT NULL,
  message_to varchar(15) NOT NULL,
  message_status bit(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE message_map
    ADD PRIMARY KEY (message_from,message_id,message_to),
    ADD KEY FK_ij6tystusydqijqp8lgoigo1c (message_id);

ALTER TABLE message_map 
    ADD CONSTRAINT FK_MSG_MAP_USER
    FOREIGN KEY (message_from)
        REFERENCES user (USER_ID)
            ON DELETE CASCADE
            ON UPDATE CASCADE,
    ADD CONSTRAINT FK_MSG_MAP_USER_TO
    FOREIGN KEY (message_to)
        REFERENCES user (USER_ID)
            ON DELETE CASCADE
            ON UPDATE CASCADE;

Tôi đã xóa bản trình diễn khỏi định nghĩa khóa ngoại.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. iptables:Sao chép / Cổng chuyển tiếp

  2. tìm kiếm một cách dễ hiểu hơn để truy cập cơ sở dữ liệu

  3. Truy vấn tìm kiếm đầu tiên theo chiều rộng trong MySQL?

  4. Làm cách nào để thiết lập MySQL để hoạt động với C #?

  5. lưu trữ số lượng hàng hay chỉ đếm số hàng?