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'键。摆脱后者;这是多余的。 –