Я уже видел много тем, которые имеют такую же проблему, как и я, но никто не имел хорошего ответа для моего дела.SQL - phpmyadmin - Foreign Key errno: 150
Я создал модель, и я получил SQL-скрипт из этого программного обеспечения. Проблема в том, что у меня есть errno: 150 с иностранным ключом в PhpMyAdmin. Я проверил, оба ключа имеют один и тот же тип, но проблема все еще здесь.
Можете ли вы помочь мне решить эту проблему, пожалуйста? я имел:
#1005 - Can't create table `candidathlon`.`#sql-21ac_3b`
(errno: 150"Foreign key constraint is incorrectly formed")
С просьбой:
ALTER TABLE participer_a
ADD CONSTRAINT FK_participer_a_DateEvenement FOREIGN KEY (DateEvenement)
REFERENCES Evenement(DateEvenement)
Это мои таблицы, которые имеют эту проблему:
CREATE TABLE Evenement(
NumEvenement int (11) Auto_increment NOT NULL ,
NomEvenement Varchar (25) NOT NULL ,
DateEvenement Date NOT NULL ,
PRIMARY KEY (NumEvenement ,DateEvenement) ,
INDEX (NomEvenement)
)ENGINE=InnoDB;
CREATE TABLE Candidat(
DateNaissance Date NOT NULL ,
NumTelPort Varchar (25) NOT NULL ,
NumTelFixe Varchar (25) NOT NULL ,
Adresse Varchar (25) NOT NULL ,
TrouverEntreprise Bool NOT NULL ,
InscritCFA Bool NOT NULL ,
NumPersonne Int NOT NULL ,
NumStatut Int NOT NULL ,
NumVille Int NOT NULL ,
DateApprenti Date ,
NumInstit Int NOT NULL ,
PRIMARY KEY (NumPersonne) ,
INDEX (TrouverEntreprise ,InscritCFA)
)ENGINE=InnoDB;
CREATE TABLE participer_a(
ParticipeEvent Bool NOT NULL ,
CommentaireEvent Varchar (100) ,
SouhaiteParticiper Bool NOT NULL ,
NumPersonne Int NOT NULL ,
NumEvenement Int NOT NULL ,
DateEvenement Date NOT NULL ,
PRIMARY KEY (NumPersonne ,NumEvenement ,DateEvenement)
)ENGINE=InnoDB;
ALTER TABLE participer_a ADD CONSTRAINT FK_participer_a_NumPersonne FOREIGN KEY (NumPersonne) REFERENCES Personne(NumPersonne);
ALTER TABLE participer_a ADD CONSTRAINT FK_participer_a_NumEvenement FOREIGN KEY (NumEvenement) REFERENCES Evenement(NumEvenement);
ALTER TABLE participer_a ADD CONSTRAINT FK_participer_a_DateEvenement FOREIGN KEY (DateEvenement) REFERENCES Evenement(DateEvenement);
Aaaaah отлично. Да, это то, что я хотел сделать, но я не знал, как это сделать правильно. Я думал, что Индекс не проблема. Спасибо ! Все работает! – Etienne