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

Masalah menambahkan Kunci Asing menggunakan Tabel Alter dengan Database MYSQL yang ada - tidak dapat menambahkannya! Membantu!

Apakah kedua tabel bertipe InnoDB?

Apakah tabel perusahaan memiliki indeks pada company_id ?

Saya kira tabel Anda adalah MyISAM (default jika Anda belum mengubah konfigurasi) dan Anda tidak dapat membuat batasan kunci asing di MyISAM. Lihat deskripsi CREATE TABLE untuk dua tabel Anda.

Jika kedua tabel kosong, jatuhkan dan buat kembali, pilih InnoDB sebagai mesin. Anda juga dapat menambahkan batasan KUNCI ASING dalam skrip pembuatan tabel.

Dari MySQL Manual Referensi :

@egervari:Apa yang terjadi jika Anda menjalankan ini:

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 ;

Dan jika Anda menjalankan:

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. Bagaimana cara menggunakan MySQLdb dengan Python dan Django di OSX 10.6?

  2. MySql Query:Pilih 3 baris teratas dari tabel untuk setiap kategori

  3. MySQL dan GROUP_CONCAT() panjang maksimum

  4. Menggunakan DISTINCT dan COUNT bersama-sama dalam Query MySQL

  5. Hasil N Terbaik MySQL dengan Tabel Gabung