2
我已經按照我的數據庫2個表:外鍵約束錯誤1005
CREATE TABLE `address` (
`id` bigint(20) NOT NULL auto_increment,
`entity_creation_timestamp` datetime default NULL,
`entity_version` bigint(20) default NULL,
`city` varchar(255) default NULL,
`country` varchar(255) NOT NULL,
`county` varchar(255) default NULL,
`label` varchar(255) default NULL,
`line1` varchar(255) default NULL,
`line2` varchar(255) default NULL,
`line3` varchar(255) default NULL,
`state` varchar(255) NOT NULL,
`zip` varchar(255) NOT NULL,
`zip_extension` varchar(255) default NULL,
`party_id` bigint(20) default NULL,
`list_index` int(11) default NULL,
`last_updated_timestamp` datetime default NULL,
PRIMARY KEY (`id`),
KEY `fk_party_postaladdress_id` (`party_id`),
CONSTRAINT `fk_party_postaladdress_id` FOREIGN KEY (`party_id`) REFERENCES `sims_party` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
另一個:
CREATE TABLE `state` (
`state` varchar(255) NOT NULL,
`name` varchar(255) default NULL,
PRIMARY KEY (`state`),
KEY `pk_state` (`state`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
我想申請在「狀態」列外鍵約束「地址」表中的「狀態」表「姓名」列..
我使用對於相同的命令是:
ALTER TABLE address
ADD CONSTRAINT FK_address_state FOREIGN KEY (state)
REFERENCES state(state) ON DELETE RESTRICT ON UPDATE RESTRICT;
但每次我運行此命令時,我得到以下錯誤:
ERROR 1005 (HY000): Can't create table 'db.#sql-75c_da' (errno: 150)
任何想法,它去錯了... ???
什麼樣的數據庫?哪個引擎? - 編輯:剛注意到它的InnoDB,也許你應該在問題和標籤中更清楚一點。 – Dror
刪除'fk_party_postaladdress_id'約束後,您的DDL在MySQL 5.5上運行時沒有錯誤。 (因爲您沒有爲其引用的表發佈DDL,所以已刪除。) –