MySQL select version () - 5.5.9 для Mac OS / X 10.6
Вопрос
Когда я выполняю сценарий sql ниже, я сталкиваюсь с очень озадачивающимошибка ограничения внешнего ключа.Кажется, что это не должно бросать эту ошибку.Более того, я знаю, что другие пытались выполнить эти шаги, но не смогли воспроизвести (см .: http://forums.mysql.com/read.php?10,415350,415350#msg-415350)
Кто-нибудь может определить, что мы делаем неправильно?
Воспроизвести:
- создать базу данных constraint_test;
- создать файл constraint_test.sql и вставить нижеприведенный файл sql.
- из строки cmdвыполнить «mysql constraint_test
Ожидаемый результат: строка сохраняется для таблиц клиентов, застрахованных и получателей.
Фактический результат: Как вы увидите, ошибка ограничения внешнего ключа, которую мы постоянно получаем, похожа на:
"ОШИБКА 1452 (23000) в строке 55:Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено (constraint_test
. beneficiary
, CONSTRAINT FK41BADEC55CE3480
FOREIGN KEY (insured_id
) ССЫЛКИ Insured
(insured_id
)) "
Однако в родительской таблице Insured определенно присутствует insured_id.
Призывпомогите, если сможете!
constraint_test.sql содержимое:
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);