2016-07-28 6 views
4

데이터베이스 생성을 위해 Nodejs sequelize를 사용하려고합니다. 호출되는 명령은 MySql - Sequalize - 외래 키 제약 조건을 추가 할 수 없습니다.

CREATE TABLE IF NOT EXISTS `wheel` (`id` INTEGER NOT NULL auto_increment , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `shopId` VARCHAR(255), PRIMARY KEY (`id`), 
FOREIGN KEY (`shopId`) REFERENCES `shop` (`id`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB; 

CREATE TABLE IF NOT EXISTS `segments` (`segmentID` VARCHAR(255) NOT NULL , `heading` VARCHAR(255) NOT NULL, `subHeading` VARCHAR(255) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `wheelId` INTEGER, PRIMARY KEY (`segmentID`), 
FOREIGN KEY (`wheelId`) REFERENCES `wheel` (`id`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB; 

CREATE TABLE IF NOT EXISTS `shop` (`id` VARCHAR(255) NOT NULL , `accessToken` VARCHAR(255) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB; 

하지만이 오류

Unhandled rejection SequelizeDatabaseError: ER_CANNOT_ADD_FOREIGN: Cannot add foreign key constraint

내가 마지막 외래 키 오류가 표시하려고 얻을, 그것은

------------------------ 
LATEST FOREIGN KEY ERROR 
------------------------ 
2016-07-28 19:23:21 0x700000d95000 Error in foreign key constraint of table exitpopup/segments: 
FOREIGN KEY (`wheelId`) REFERENCES `wheel` (`id`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB: 
Cannot resolve table name close to: 
(`id`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB 

이상하게도, 나는 넣으면 말한다 SQL 콘솔에 sql 문이 있으면 작동하며 오류가 없습니다. 내가 뭘 잘못하고 있니?

답변

2

주문을 변경해야합니다. shop 테이블을 만들기 전에 wheel 테이블을 만들었습니다. 그러나 휠은 원래 쿼리 집합에 존재하지 않는 상점 테이블을 참조합니다. 주.을 변경하면 상점 테이블이이 L 존재하여 오류가 _ 생하지 않습니다.

CREATE TABLE IF NOT EXISTS `shop` 
(`id` VARCHAR(255) NOT NULL , `accessToken` VARCHAR(255) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, 
PRIMARY KEY (`id`)) ENGINE=InnoDB; 


CREATE TABLE IF NOT EXISTS `wheel` 
(`id` INTEGER NOT NULL auto_increment , `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `shopId` VARCHAR(255), 
PRIMARY KEY (`id`), 
FOREIGN KEY (`shopId`) REFERENCES `shop` (`id`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB; 

CREATE TABLE IF NOT EXISTS `segments` 
(`segmentID` VARCHAR(255) NOT NULL , `heading` VARCHAR(255) NOT NULL, `subHeading` VARCHAR(255) NOT NULL, `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `wheelId` INTEGER, 
PRIMARY KEY (`segmentID`), 
FOREIGN KEY (`wheelId`) REFERENCES `wheel` (`id`) ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=InnoDB; 
관련 문제