【发布时间】:2014-02-15 18:14:48
【问题描述】:
我有这个
CREATE TABLE IF NOT EXISTS `beta`.`msg_messages` (
`id_msg` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT ,
`id_user_from` BIGINT(20) UNSIGNED NOT NULL ,
`subject` VARCHAR(200) NOT NULL ,
`body` TEXT NOT NULL ,
`date` DATETIME NOT NULL ,
PRIMARY KEY (`id_msg`) ,
INDEX fk_msg_messages_user (`id_user_from` ASC) ,
INDEX fk_msg_messages_msg_messages_users (`id_msg` ASC) ,
CONSTRAINT `fk_msg_messages_user`
FOREIGN KEY (`id_user_from` )
REFERENCES `beta`.`user` (`id` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_msg_messages_msg_messages_users`
FOREIGN KEY (`id_msg` )
REFERENCES `beta`.`msg_messages_users` (`id_msg` )
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
*这是我的错误。这些也是我的 user 和 msg_messages_users 表。我已经查看了所有表格,但看不到我的错误。我正在使用 MysqlWorbench,它会生成这个错误的 sintax。*
错误 1005:无法创建表“beta.msg_messages”(错误号:150)。
CREATE TABLE IF NOT EXISTS `beta`.`user` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT ,
`username` VARCHAR(100) NOT NULL ,
PRIMARY KEY (`id`) ,
ENGINE = InnoDB
AUTO_INCREMENT = 87
DEFAULT CHARACTER SET = utf8;
CREATE TABLE IF NOT EXISTS `beta`.`msg_messages_users` (
`id` BIGINT UNSIGNED NOT NULL ,
`id_usr_to` BIGINT(20) UNSIGNED NOT NULL ,
`id_msg` BIGINT(20) UNSIGNED NOT NULL ,
`status` TINYINT NOT NULL DEFAULT 0 ,
`date` DATETIME NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX fk_msg_messages_users_user (`id_usr_to` ASC) ,
CONSTRAINT `fk_msg_messages_users_user`
FOREIGN KEY (`id_usr_to` )
REFERENCES `beta`.`user` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
【问题讨论】:
-
也许
id_msg BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT应该只是id_msg BIGINT(20) UNSIGNED NOT NULL。自动递增的列如何引用其他表? -
请发布“SHOW ERRORS”和“SHOW ENGINE INNODB STATUS”的输出。自动增量是合法的(尽管它肯定很奇怪)。问题在于 fk_msg_messages_msg_messages_users 约束创建(如果删除它,它将创建表)
-
140215 17:56:57 表 beta/msg_messages 的外键约束错误:FOREIGN KEY (
id_msg) REFERENCESbeta.msg_messages_users(id_msg) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB: 在被引用的列作为第一列出现的被引用表中找不到索引,或者表中的列类型与被引用表的约束不匹配。 -
我在我的 msg_message_users 中看到了 id_msg 的索引,并且它们的类型正确匹配...
-
我是个笨蛋...我在错误的表中声明了一个外键..lol
标签: mysql foreign-keys foreign-key-relationship mysql-error-1005