我通过 MySQL Workbench 5.2.47 在 MySQL 5.6.11 中创建了两个表,如下所示。
表country
:
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$$
state_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=''$$
country
表中有 1 行id
。它只允许将一个(子)行插入其子表中state_table
。如果尝试更多行,则会发生以下错误。
错误 1452:无法添加或更新子行:外键约束失败 (
social_networking
.state_table
, CONSTRAINTcountry_fk
FOREIGN KEY (id
) REFERENCEScountry
(id
) ON DELETE CASCADE ON UPDATE CASCADE)
SQL 语句:
INSERT INTO `social_networking`.`state_table` (`id`, `state_name`, `country_id`) VALUES ('2', 'xxx', '1')
实际上,我正在尝试使用我总是只看到OneToOne
关系的 ORM (JPA) 映射这些表。
我错过了什么?