2013-10-14 48 views
0

不知道還有其他要檢查/做什麼。我確信外鍵的數據類型相匹配(CHAR(36)),我保證外鍵語句使用正確的語法錯誤1215無法添加外鍵約束數據類型匹配

運行此腳本,我得到錯誤1215

USE addm; 
CREATE TABLE `addm`.`notificationResource` (
`notificationId` CHAR(36) NOT NULL , 
`resourceId` CHAR(36) NOT NULL , 
PRIMARY KEY (`notificationId`, `resourceId`) , 
INDEX `fk_notificationResource_notification_idx` (`notificationId` ASC) , 
INDEX `fk_notificationResource_resource_idx` (`resourceId` ASC) , 
CONSTRAINT `fk_notificationResource_notification` 
FOREIGN KEY (`notificationId`) 
REFERENCES `addm`.`notification` (`id`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION, 
CONSTRAINT `fk_notificationResource_resource` 
FOREIGN KEY (`resourceId`) 
REFERENCES `addm`.`resource` (`resourceId`) 
ON DELETE NO ACTION 
ON UPDATE NO ACTION); 
commit; 

父表:

CREATE TABLE `resource` (
`resourceId` char(36) NOT NULL, 
`resourceName` varchar(255) DEFAULT NULL, 
`resourceData` longblob, 
PRIMARY KEY (`resourceId`), 
UNIQUE KEY `resourceName_UNIQUE` (`resourceName`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$ 


CREATE TABLE `notification` (
`notificationType` varchar(5) CHARACTER SET latin1 NOT NULL, 
`id` char(36) CHARACTER SET latin1 NOT NULL, 
`aborted` bit(1) DEFAULT NULL, 
`attempts` int(11) DEFAULT NULL, 
`content` longblob, 
`recordDate` datetime DEFAULT NULL, 
`sent` bit(1) DEFAULT NULL, 
`sentDate` datetime DEFAULT NULL, 
`subject` varchar(255) CHARACTER SET latin1 DEFAULT NULL, 
`fromUser_id` bigint(20) DEFAULT NULL, 
`toUser_id` bigint(20) DEFAULT NULL, 
`attachmentName` varchar(100) CHARACTER SET latin1 DEFAULT NULL, 
`attachmentData` longblob, 
`category` varchar(255) CHARACTER SET latin1 DEFAULT NULL, 
`read` tinyint(1) DEFAULT '0', 
`locked` tinyint(1) DEFAULT '0', 
PRIMARY KEY (`id`), 
KEY `FK2D45DD0B7F734EAD` (`toUser_id`), 
KEY `FK2D45DD0BE62E629E` (`fromUser_id`), 
CONSTRAINT `FK2D45DD0B7F734EAD` FOREIGN KEY (`toUser_id`) REFERENCES `user` (`id`), 
CONSTRAINT `FK2D45DD0BE62E629E` FOREIGN KEY (`fromUser_id`) REFERENCES `user` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8$$ 
+1

我認爲column CHARACTER SET是不同的。 'id' char(36)CHARACTER SET latin1 NOT NULL, –

+0

就是這樣。你可以讓它成爲答案,我會選擇它。 – Phox

回答

2

我認爲列CHARACTER SET是不同的。 id char(36)CHARACTER SET latin1 NOT NULL 更改CHARACTER SET

+0

再次感謝這一點。它正在處理另一個數據庫,並且從現在開始。 – Phox

相關問題