0
我有了這個MySQL錯誤150以夷鍵
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
*這是我的錯誤。這些也是我的用戶和msg_messages_users表。我查看了所有的表格,但無法看到我的錯誤。我在MysqlWorbench上工作,它會產生這個錯誤的sintax。*
錯誤1005:無法創建表'beta.msg_messages'(errno: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'。自動增量的列如何引用其他表? – SparKot
請發佈「SHOW ERRORS」和「SHOW ENGINE INNODB STATUS」的輸出。 autoincrement是合法的(雖然它確實很奇怪)。問題是在創建fk_msg_messages_msg_messages_users約束時(如果將其刪除,它將創建表) – Leo
140215 17:56:57表beta/msg_messages的外鍵約束出錯:FOREIGN KEY('id_msg') REFERENCES'beta' .'msg_messages_users'('id_msg') ON DELETE CASCADE ON UPDATE CASCADE) ENGINE = InnoDB的: 不能在表中找到所引用的表中的索引,其中 引用列顯示爲所述第一列或列類型 並且所引用的表格與約束不匹配。 – Julioarhernandez