Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL Foreign Key Error 1005 errno 150 primary key sebagai kunci asing

Saat membuat batasan kunci asing, MySQL memerlukan indeks yang dapat digunakan pada tabel referensi dan juga pada tabel referensi. Indeks pada tabel referensi dibuat secara otomatis jika tidak ada, tetapi indeks pada tabel referensi harus dibuat secara manual (Sumber ). Milik Anda tampaknya hilang.

Kasus uji:

CREATE TABLE tbl_a (
    id int PRIMARY KEY,
    some_other_id int,
    value int
) ENGINE=INNODB;
Query OK, 0 rows affected (0.10 sec)

CREATE TABLE tbl_b (
    id int PRIMARY KEY,
    a_id int,
    FOREIGN KEY (a_id) REFERENCES tbl_a (some_other_id)
) ENGINE=INNODB;
ERROR 1005 (HY000): Can't create table 'e.tbl_b' (errno: 150)

Tetapi jika kita menambahkan indeks pada some_other_id :

CREATE INDEX ix_some_id ON tbl_a (some_other_id);
Query OK, 0 rows affected (0.11 sec)
Records: 0  Duplicates: 0  Warnings: 0

CREATE TABLE tbl_b (
    id int PRIMARY KEY,
    a_id int,
    FOREIGN KEY (a_id) REFERENCES tbl_a (some_other_id)
) ENGINE=INNODB;
Query OK, 0 rows affected (0.06 sec)

Hal ini sering tidak menjadi masalah dalam kebanyakan situasi, karena bidang yang direferensikan sering kali merupakan kunci utama dari tabel yang direferensikan, dan kunci utama diindeks secara otomatis.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pertanyaan MySQL

  2. Mengumumkan ClusterControl 1.4.1 - Edisi ProxySQL

  3. JSON_PRETTY() – Memformat Dokumen JSON agar Lebih Mudah Dibaca di MySQL

  4. Bantuan kasus pembaruan MySQL

  5. Penerapan Multi-Cloud untuk Replikasi MySQL