2010-07-29 58 views
2

添加外键表试图做到这一点的时候,我得到错误1452测试。,CONSTRAINT#sql-1110_2_ibfk_1 FOREIGN KEY(用户名)REFERENCES用户(用户名)))。引用键和引用键是相同类型(VARCHAR)。问题与MySQL的

我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

检查potovanja中的所有用户名是否存在于users表中。你可能有一些potovanja,在用户

像这样的事情会做不复存在......

select * from potovanja p where not exists 
    (select * from users where users.username = p.username) 
+0

Tnx也适合你。 – DixieFlatline 2010-07-29 14:14:18

+0

没问题,很高兴帮助! – 2010-07-29 15:17:53

0

看来users表中似乎没有行,但表中有一些在potovanja表中。这意味着potovanja中的行在users中没有任何可引用的内容。

+0

你是对的,就像克里斯。 Tnx – DixieFlatline 2010-07-29 14:14:50