ERRO 1452: Não é possível adicionar ou atualizar uma linha filha: uma restrição de chave estrangeira falha
Eu criei duas tabelas no MySQL 5.6.11 como mostrado abaixo por meio do MySQL Workbench 5.2.47.
ocountry
mesa:
delimiter $
CREATE TABLE `country` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`country_name` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INC
REMENT=2 DEFAULT CHARSET=utf8$
ostate_table
:
delimiter $
CREATE TABLE `state_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`state_name` varchar(45) DEFAULT NULL,
`country_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `country_fk` FOREIGN KEY (`id`) REFERENCES `country` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT=''$
Existe uma linha nocountry
mesa com oid
1. Permite que apenas uma linha (filho) seja inserida em sua tabela filhostate_table
. Se mais linhas forem tentadas, ocorrerá o seguinte erro.
ERRO 1452: Não é possível adicionar ou atualizar uma linha filha: uma restrição de chave estrangeira falha (social_networking
.state_table
, RESTRIÇÃOcountry_fk
CHAVE ESTRANGEIRA (id
) REFERÊNCIAScountry
(id
) ON DELETE CASCADE ON UPDATE CASCADE)
Instrução SQL:
INSERT INTO `social_networking`.`state_table` (`id`, `state_name`, `country_id`) VALUES ('2', 'xxx', '1')
Na verdade, estou tentando mapear essas tabelas usando um ORM (JPA) onde sempre vejo apenasOneToOne
relação.
o que estou perdendo?