4 Stimmen

Brauche Hilfe bei unheimlichem, reproduzierbarem MySQL ERROR 1452 (23000) Foreign Key Constraint

MySQL select version() ist 5.5.9 auf Mac OS/X 10.6

Frage

Wenn ich das unten stehende SQL-Skript ausführe, stoße ich auf einen sehr verwirrenden Fremdschlüssel-Beschränkungsfehler. Es scheint, als ob dieser Fehler nicht auftreten sollte. Außerdem weiß ich, dass andere versucht haben, die Schritte zu befolgen, aber nicht in der Lage sind, zu reproduzieren (siehe: http://forums.mysql.com/read.php?10,415350,415350#msg-415350 )

Kann jemand erkennen, was wir falsch machen?

Zur Vervielfältigung:

  1. Datenbank constraint_test erstellen;
  2. Erstellen Sie die Datei "constraint_test.sql" und fügen Sie die nachstehende Sql ein.
  3. in der Cmd-Zeile "mysql constraint_test < constraint_test.sql" ausführen (oder in meinem Sql "source tmp/constraint_test.sql" ausführen)

Erwartetes Ergebnis: Zeile in den Tabellen für Kunden, Versicherte und Begünstigte erhalten bleibt.

Tatsächliches Ergebnis: Wie Sie sehen werden, ist der Fehler bei der Fremdschlüssel-Beschränkung, den wir immer wieder erhalten, ähnlich wie dieser:

"ERROR 1452 (23000) in Zeile 55: Hinzufügen oder Aktualisieren einer untergeordneten Zeile nicht möglich: eine Fremdschlüssel-Beschränkung schlägt fehl ( constraint_test . beneficiary CONSTRAINT FK41BADEC55CE3480 FOREIGN KEY ( insured_id ) REFERENZEN Insured ( insured_id ))"

Es gibt jedoch definitiv eine insured_id in der übergeordneten Tabelle Insured.

Bitte helfen Sie, wenn Sie können!

constraint_test.sql Inhalt:

create table Beneficiary ( 
beneficiary_id bigint not null, 
district varchar(255), 
serviceUnit varchar(255), 
insuredNo integer, 
beneficiaryIndex integer, 
relationship varchar(255), 
percentage double precision, 
fullName varchar(255), 
lastUpdatedDate datetime, 
insured_id bigint, 
contractNo varchar(255), 
primary key (beneficiary_id) 
); 

create table Client ( 
client_id bigint not null, 
firstName varchar(255), 
lastName varchar(255), 
email varchar(255), 
initial varchar(255), 
birthDate datetime, 
district varchar(255), 
serviceUnit varchar(255), 
genderType varchar(255), 
externalId varchar(255), 
externalTempId varchar(255), 
taxationProvince varchar(255), 
children varchar(255), 
manufacturerClientNumber varchar(255), 
primary key (client_id) 
); 

create table Insured ( 
insured_id bigint not null, 
client_id bigint not null, 
insuredNo integer, 
primary key (insured_id) 
); 

alter table Beneficiary 
add index FK41BADEC55CE3480 (insured_id), 
add constraint FK41BADEC55CE3480 
foreign key (insured_id) 
references Insured (insured_id); 

alter table Insured 
add index FKD7E770CAC207FE14 (client_id), 
add constraint FKD7E770CAC207FE14 
foreign key (client_id) 
references Client (client_id); 

insert into Client (client_id) values (1); 
insert into Insured (insured_id, client_id ) values (1,1); 
insert into Beneficiary (beneficiary_id, insured_id) values (1,1);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X