0
MESSAGE_MAP表mysql的錯誤號:150「外鍵約束的格式不正確」 - MariaDB的
CREATE TABLE `message_map` (
`message_from` varchar(15) NOT NULL,
`message_id` varchar(15) NOT NULL,
`message_to` varchar(15) NOT NULL,
`message_status` bit(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `message_map`
ADD PRIMARY KEY (`message_from`,`message_id`,`message_to`),
ADD KEY `FK_ij6tystusydqijqp8lgoigo1c` (`message_id`),
用戶表
CREATE TABLE `user` (
`USER_ID` varchar(15) NOT NULL,
`PASSWORD` varchar(15) DEFAULT NULL,
`PHONE_NUMBER` varchar(15) DEFAULT NULL,
`USER_NAME` varchar(15) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `user`
ADD PRIMARY KEY (`USER_ID`),
ADD UNIQUE KEY `USER_ID_UNIQUE` (`USER_ID`);
我想下面的查詢申請外鍵約束
ALTER TABLE `demo`.`message_map`
ADD CONSTRAINT `FK_MSG_MAP_USER`
FOREIGN KEY (`message_from`)
REFERENCES `demo`.`user` (`USER_ID`)
ON DELETE CASCADE
ON UPDATE CASCADE,
ADD CONSTRAINT `FK_MSG_MAP_USER_TO`
FOREIGN KEY (`message_to`)
REFERENCES `demo`.`user` (`USER_ID`)
ON DELETE CASCADE
ON UPDATE CASCADE;
即時得到以下錯誤
錯誤1005:無法創建表
<shema>
。#sql-1964_4
(錯誤:150> 「外鍵約束被不正確地形成」)
我觀察
列(message_from,message_to)和USER_ID的數據類型是 相同。而且USER_ID也是主鍵。
問題是
出了什麼問題?
謝謝你的答案
3列主鍵? – Riad
您的發佈代碼包含錯誤。 –
'PRIMARY KEY'是'UNIQUE'鍵。擺脫後者;這是多餘的。 –