在mySQL查询错误1005中找不到错误

时间:2013-04-16 08:35:25

标签: php mysql syntax

我是PHP和mySQL的新手,我似乎不知道错误是什么,查询是

delimiter $$

CREATE TABLE `bms`.`client_unit_people` (
  `unit_people_ID` int(13) unsigned NOT NULL AUTO_INCREMENT,
  `client_block_ID` int(13) unsigned NOT NULL,
  `client_unit_ID` int(13) unsigned NOT NULL,
  `people_name` varchar(255) NOT NULL,
  `people_salutation` varchar(255) NOT NULL,
  `people_telephone` varchar(20) DEFAULT NULL,
  `people_mobile` varchar(20) DEFAULT NULL,
  `user_account_ID` int(13) unsigned DEFAULT NULL,
  `web_access` enum('Yes','No') NOT NULL DEFAULT 'No',
  `tel_prefs` enum('Yes','No') NOT NULL DEFAULT 'No',
  `mob_prefs` enum('Yes','No') NOT NULL DEFAULT 'No',
  `email_prefs` enum('Yes','No') NOT NULL DEFAULT 'No',
  PRIMARY KEY (`unit_people_ID`),
  KEY `FK_up_ua_idx` (`user_account_ID`),
  KEY `FK_ua_up_idx` (`user_account_ID`),
  KEY `FK_up_cu_idx` (`client_unit_ID`),
  KEY `FK_up_cb_idx` (`client_block_ID`),
  CONSTRAINT `FK_up_cb` FOREIGN KEY (`client_block_ID`) REFERENCES `client_blocks` (`client_block_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `FK_ua_up` FOREIGN KEY (`user_account_ID`) REFERENCES `user_accounts` (`user_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `FK_up_cu` FOREIGN KEY (`client_unit_ID`) REFERENCES `client_units` (`client_unit_ID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='List of people associated with units'$$

我收到的错误是:

  

错误代码:1005。无法创建表'bms.client_unit_people'(错误号:150)

3 个答案:

答案 0 :(得分:1)

我认为外键约束必须引用目标表中具有正确类型的索引列。

确保您已在这些表中为相关键创建了索引,并且类型匹配。

例如,client_blocks应该有client_block_ID的索引,两个表之间的类型应该相同。

online documentation表示这是造成1005/150错误的最可能原因。

答案 1 :(得分:0)

如果要重新创建先前删除的表,则它必须具有符合引用它的外键约束的定义。通常,150错误与外键约束有关。列名和类型必须正确,并且索引应该是引用键。

答案 2 :(得分:0)

我认为你应该在MySQL论坛的this帖子中找到你的问题的提示。希望有所帮助:)