java - 错误代码 : 1822. 添加外键约束失败。引用表 'employee_ibfk_1' 中缺少约束 'Address' 的索引

标签 java sql hibernate

创建了两个表,即Address和Employee。具有关系的employee有n个地址。 DB脚本如下。

create table address(addressid int,city varchar(10),pincode varchar(10));

insert into address(addressid,city,pincode) values(201,'Hosur',635109);

create table employee(empid int , firstname varchar(20),lastname varchar(20),department varchar(10),emailAddress varchar(50),baseLocation varchar(20),address int,FOREIGN KEY (Address) REFERENCES Address(addressId));

但是在尝试创建员工表时出现以下错误:

Error Code: 1822. Failed to add the foreign key constraint. Missing index for constraint 'employee_ibfk_1' in the referenced table 'Address' 0.117 sec

最佳答案

您可能应该在地址表中的地址 ID 上添加主键,这将创建所需的索引。在您当前的脚本中,不能保证 addressid 是唯一的,因此,如果存在重复项,外键永远无法确定要引用哪一行。

create table address(addressId int primary key not null, city varchar(10), pincode varchar(10));

关于java - 错误代码 : 1822. 添加外键约束失败。引用表 'employee_ibfk_1' 中缺少约束 'Address' 的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55759582/

相关文章:

java - 用 Java 中的循环替换代码中的语句

java - 修剪从 mongoDB 收到的 json 中的双引号

java - URL 编码字符串不是有效的 URI

PHP mysql查询循环以获得最低值

java - Java 中的默认种子 PRNG

c# - 带有 OUTPUT 子句的 SQL Server BULK INSERT

sql - Postgresql 交叉表替代方案

java - 使用 jetty :run-exploded 启动时,Wicket 应用程序在启动时抛出异常

Hibernate - 使实体与批量数据库更新保持同步

java - 使用 jsf 进行多重 CRUD 的最佳策略