尝试执行此操作时出现错误1452:
ALTER TABLE test.potovanja
ADD CONSTRAINT usr_ind
FOREIGN KEY (username)
REFERENCES test.users (username)
(错误代码:1452 无法添加或更新子行:外键约束失败(测试。,CONSTRAINT#sql-1110_2_ibfk_1 FOREIGN KEY(用户名)REFERENCES用户(用户名)))。引用键和引用键的类型相同(VARCHAR)。
我的SHOW CREATE TABLE输出:
CREATE TABLE `users` (
`username` varchar(45) NOT NULL,
`password` varchar(45) DEFAULT NULL,
`ime` varchar(45) DEFAULT NULL,
`priimek` varchar(45) DEFAULT NULL,
`nacinp` varchar(45) DEFAULT NULL,
`email` varchar(45) DEFAULT NULL,
PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `potovanja` (
`idpotovanja` int(11) NOT NULL AUTO_INCREMENT,
`od` varchar(45) DEFAULT NULL,
`do` varchar(45) DEFAULT NULL,
`datumvstopa` varchar(45) DEFAULT NULL,
`username` varchar(45) DEFAULT NULL,
`cena` varchar(45) DEFAULT NULL,
`datumizstopa` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idpotovanja`),
KEY `usr_ind` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8
我真的不知道该怎么做。
答案 0 :(得分:0)
似乎users
表中没有行,但potovanja
表中有一些行。这意味着potovanja
中的行无法在users
中引用。
答案 1 :(得分:0)
检查potovanja中的所有用户名是否都存在于users表中。你可能在potovanja中有一些用户不再存在
这样的事情会做到......
select * from potovanja p where not exists
(select * from users where users.username = p.username)