MySQL无法创建表(错误号:150) - 表没有外键

时间:2013-02-18 07:51:40

标签: mysql runtime-error

1-我知道这个问题已被问过好几次了。 2-我全部读完了 3-它没有解决我的问题 4-我知道这与外键关系有关

我只是想创建一个没有外键但仍然出现此错误的表

Can't create table 'pwp.decision_nodes' (errno: 150)

这是表创建语句

CREATE TABLE IF NOT EXISTS `decision_nodes` (
  `id` BIGINT(45) NOT NULL AUTO_INCREMENT,
  `decision_node_id` BIGINT(50) NOT NULL,
  KEY pk_index(`id`),
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=125 DEFAULT CHARSET=utf8;

我甚至尝试过

SET FOREIGN_KEY_CHECKS = 0;

并运行create语句,但无济于事。

MySQL版

'5.5.21-log'

我不太确定,但我认为之前(很久以前)数据库中有一个同名的表,可能已重命名或删除。这可能是一个暗示吗?

该历史表(重命名或删除)与另外两个表help_entityref_cancer_type具有外键关系

CREATE TABLE `help_entity` (
  `id` bigint(50) NOT NULL AUTO_INCREMENT,
  `type` int(50) NOT NULL,
  `comments` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=171 DEFAULT CHARSET=utf8


CREATE TABLE `ref_cancer_type` (
  `id` char(3) NOT NULL,
  `description` varchar(100) DEFAULT NULL,
  `is_active` tinyint(4) NOT NULL,
  `display_order` decimal(10,0) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

这是否证明了这一点?

1 个答案:

答案 0 :(得分:2)

我认为您的其他一些表具有您现在要创建的此表的外键引用。

请参阅http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

If you re-create a table that was dropped, it must have a definition that conforms to the foreign
key constraints referencing it. It must have the right column names and types, and it must have 
indexes on the referenced keys, as stated earlier. If these are not satisfied, MySQL returns error 
number 1005 and refers to error 150 in the error message.