【问题标题】:Problem with adding foreign key to table in mySql在 mySql 中向表中添加外键的问题
【发布时间】:2010-07-29 09:48:03
【问题描述】:

尝试执行此操作时出现错误 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 (username) REFERENCES users (username)))。引用键和被引用键的类型相同(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

我真的不知道该怎么办。

【问题讨论】:

    标签: mysql foreign-keys


    【解决方案1】:

    检查 potovanja 中的所有用户名是否都存在于 users 表中。您可能在 potovanja 中有一些不再存在于用户中

    这样的事情会做......

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-07-12
        • 2019-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-01
        相关资源
        最近更新 更多