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

Kesalahan SQL (1215):Tidak dapat menambahkan batasan kunci asing

Di bawah ini akan gagal karena susunannya berbeda. Mengapa saya menunjukkan ini? Karena OP tidak.

Catatan Saya mengecilkan ukuran karena kesalahan 1071 pada ukuran untuk varchar 255 dengan susunan itu dan kemudian rangkaian karakter yang dipilih secara otomatis.

Intinya, jika susunannya berbeda, itu tidak akan berhasil.

CREATE TABLE `user_details` (
    `ClientID` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`ClientID`)
)ENGINE=InnoDB;

CREATE TABLE `profilePic` (
    `ClientID` VARCHAR(100) NOT NULL,
    PRIMARY KEY (`ClientID`),
    CONSTRAINT `FK__user_details` FOREIGN KEY (`ClientID`) REFERENCES `user_details` (`ClientID`) ON UPDATE CASCADE ON DELETE CASCADE
)COLLATE='utf8mb4_unicode_ci' ENGINE=InnoDB;

Kegagalan di atas adalah pada tingkat tabel. Yang lebih rumit yang menyebabkan kesalahan 1215 karena ketidakcocokan susunan tingkat kolom dapat dilihat di Jawaban ini .

Menarik diskusi ke kasus yang lebih umum ...

apakah Anda mencoba membuat batasan Kunci Asing pada pembuatan tabel atau dengan ALTER TABLE

seperti

ALTER TABLE `facility` ADD CONSTRAINT `fkZipcode` 
     FOREIGN KEY (`zipcode`) REFERENCES `allzips`(`zipcode`);

berikut ini akan berlaku.

Dari halaman manual MySQL berjudul Menggunakan KUNCI ASING Batasan :

Selain itu, direferensikan tabel (induk) harus memiliki kunci paling kiri yang tersedia untuk pencarian cepat (verifikasi). Kunci induk itu tidak harus PRIMARY atau bahkan UNIQUE . Konsep ini dijelaskan dalam potongan ke-2 di bawah ini. Potongan pertama menyinggung Pembantu indeks yang akan dibuat jika perlu di referensi tabel (anak) jika perlu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana lebih mengoptimalkan tabel MySQL ini untuk satu Query

  2. mysqldump dengan banyak tabel dengan atau tanpa klausa where

  3. Tranfer Kode QR Ke Database MySql

  4. Kueri dengan banyak nilai dalam satu kolom

  5. Bagaimana cara membatasi banyak angka dengan memfilter beberapa kolom di MySql?