我正在尝试创建数据库表并将它们连接起来。我确保我的数据类型完全相同。我还确保在添加FK之前制作我的表格。任何建议都将不胜感激。
SQL query:
ALTER TABLE `Member` ADD FOREIGN KEY ( memberId ) REFERENCES `Order_Head` ( `memberId` ) ;
MySQL said: Documentation
#1005 - Can't create table 'test2.#sql-184c_63' (errno: 150) (Details...)
-- ---
-- Table 'Order_Head'
--
-- ---
DROP TABLE IF EXISTS `Order_Head`;
CREATE TABLE `Order_Head` (
`orderId` INTEGER NOT NULL AUTO_INCREMENT,
`memberId` INTEGER NOT NULL,
`date` DATE NOT NULL,
PRIMARY KEY (`orderId`, `memberId`)
);
-- ---
-- Table 'Member'
--
-- ---
DROP TABLE IF EXISTS `Member`;
CREATE TABLE `Member` (
`memberId` INTEGER NOT NULL AUTO_INCREMENT,
`userName` VARCHAR(50) NOT NULL,
`password` VARCHAR(50) NOT NULL,
`email` VARCHAR(100) NOT NULL,
`isAdmin` BOOLEAN NOT NULL DEFAULT false,
PRIMARY KEY (`memberId`)
);
-- ---
-- Foreign Keys
-- ---
ALTER TABLE `Member` ADD FOREIGN KEY (memberId) REFERENCES `Order_Head` (`memberId`);
-- ---
-- Table Properties
-- ---
ALTER TABLE `Order_Head` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
ALTER TABLE `Member` ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
答案 0 :(得分:1)
可能是因为您尝试设置的外键是主键且有AUTO_INCREMENT
,可能是您的意思:
ALTER TABLE `Order_Head` ADD FOREIGN KEY (memberId) REFERENCES `Member` (`memberId`);
您是否在CREATE TABLE
语句中创建外键的任何特殊原因?如果没有,那么你也应该这样做。