Yeni şemamı db sunucuma iletmeye çalışıyorum, ancak neden bu hatayı aldığımı anlayamıyorum. Cevabı burada aramaya çalıştım, ancak bulduğum her şey ya db motorunu Innodb olarak ayarlamamı ya da yabancı anahtar olarak kullanmaya çalıştığım anahtarların kendi tablolarında birincil anahtar olduğundan emin olmamı söyledi. Yanılmıyorsam bunların ikisini de yaptım. Önerebileceğiniz başka bir yardım var mı?
Executing SQL script in server
ERROR: Error 1215: Cannot add foreign key constraint
-- -----------------------------------------------------
-- Table `Alternative_Pathways`.`Clients_has_Staff`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Clients_has_Staff` (
`Clients_Case_Number` INT NOT NULL ,
`Staff_Emp_ID` INT NOT NULL ,
PRIMARY KEY (`Clients_Case_Number`, `Staff_Emp_ID`) ,
INDEX `fk_Clients_has_Staff_Staff1_idx` (`Staff_Emp_ID` ASC) ,
INDEX `fk_Clients_has_Staff_Clients_idx` (`Clients_Case_Number` ASC) ,
CONSTRAINT `fk_Clients_has_Staff_Clients`
FOREIGN KEY (`Clients_Case_Number` )
REFERENCES `Alternative_Pathways`.`Clients` (`Case_Number` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Clients_has_Staff_Staff1`
FOREIGN KEY (`Staff_Emp_ID` )
REFERENCES `Alternative_Pathways`.`Staff` (`Emp_ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
SQL komut dosyası yürütme tamamlandı: ifadeler: 7 başarılı, 1 başarısız
İşte üst tablolar için SQL.
CREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Clients` (
`Case_Number` INT NOT NULL ,
`First_Name` CHAR(10) NULL ,
`Middle_Name` CHAR(10) NULL ,
`Last_Name` CHAR(10) NULL ,
`Address` CHAR(50) NULL ,
`Phone_Number` INT(10) NULL ,
PRIMARY KEY (`Case_Number`) )
ENGINE = InnoDB
CREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Staff` (
`Emp_ID` INT NOT NULL ,
`First_Name` CHAR(10) NULL ,
`Middle_Name` CHAR(10) NULL ,
`Last_Name` CHAR(10) NULL ,
PRIMARY KEY (`Emp_ID`) )
ENGINE = InnoDB
Sanırım Clients.Case_Number
ve/veya Staff.Emp_ID
, Clients_has_Staff.Clients_Case_Number
ve Clients_has_Staff.Staff_Emp_ID
ile tam olarak aynı veri türü değil.
Belki de üst tablolardaki sütunlar INT UNSIGNED
dir?
Her iki tabloda da tam olarak aynı veri türünde olmaları gerekir.
Yabancı anahtar kısıtlama hatası almanızın nedenleri:
Güncelleme:
ON DELETE SET NULL
için kullandığınız sütunun null olarak tanımlanmamış olması olabilir. Bu yüzden sütunun varsayılan null olarak ayarlandığından emin olun.Şunları kontrol et.