MySQL Workbench 5.2.45를 사용하여 MacOSX에 있습니다. EER 다이어그램 기능을 사용하여 데이터베이스를 설계 한 다음 생성하도록 포워드 엔지니어링을 시도했습니다. 내 데이터베이스는 내 로컬 서버에 저장합니다. 오류 1005 : 테이블을 만들 수 없습니다 (errno를 : 150) 나는 오류 코드 얻을MySQL Workbench - Forward Engineering - 오류 1005 : 테이블을 만들 수 없습니다. (errno : 150)
SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @[email protected]@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `Finance` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `Finance` ;
-- -----------------------------------------------------
-- Table `Finance`.`DatabaseUser`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Finance`.`DatabaseUser` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`FirstName` VARCHAR(255) NOT NULL ,
`LastName` VARCHAR(255) NOT NULL ,
`Tel` VARCHAR(255) NULL ,
`Email` VARCHAR(255) NOT NULL,
`Password` VARCHAR(255) NOT NULL ,
`Admin` CHAR(1) NOT NULL DEFAULT 'N' ,
`Project1` CHAR(1) NOT NULL DEFAULT 'N' ,
`Project2` CHAR(1) NOT NULL DEFAULT 'N' ,
`Project3` CHAR(1) NOT NULL DEFAULT 'N' ,
PRIMARY KEY (`ID`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `Finance`.`Entities`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Finance`.`Entities` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`CreatorID` INT(11) NOT NULL ,
`FullName` VARCHAR(255) NOT NULL ,
`ShortName` VARCHAR(255) NULL ,
PRIMARY KEY (`ID`) ,
INDEX `Creator_idx` (`CreatorID` ASC) ,
CONSTRAINT `CreatorEntities`
FOREIGN KEY (`CreatorID`)
REFERENCES `Finance`.`DatabaseUser` (`ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `Finance`.`Grant`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `Finance`.`Grant` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`CreatorID` INT(11) NOT NULL ,
`DonorID` INT(11) NOT NULL ,
`RecipientID` INT(11) NOT NULL ,
`Name` VARCHAR(255) NOT NULL ,
`Year` YEAR NOT NULL ,
PRIMARY KEY (`ID`) ,
INDEX `Creator_idx` (`CreatorID` ASC) ,
INDEX `index3` (`DonorID` ASC, `RecipientID` ASC) ,
CONSTRAINT `CreatorGrant`
FOREIGN KEY (`CreatorID`)
REFERENCES `Finance`.`DatabaseUser` (`ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `InstrumentGrant`
FOREIGN KEY (`DonorID` , `RecipientID`)
REFERENCES `Finance`.`Entities` (`ID` , `ID`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
USE `Finance` ;
SET [email protected]_SQL_MODE;
SET [email protected]_FOREIGN_KEY_CHECKS;
SET [email protected]_UNIQUE_CHECKS;
내가 포스트 (Error Code: 1005. Can't create table '...' (errno: 150))에서 제안 된 솔루션을 시도하고있다가 있지만이 될 것 같지 않습니다 문제. 1. 데이터 유형은 3. 외래 키 이름 같은 2. 참조하고있어 기본 키는 고유의 4. 테이블은 모두 InnoDB의 5. 없음 SET NULL의
것은 당신이 도와 주실 수 등 을 포함하지 않습니다 있습니다 있습니다 ?
FK 제약 조건 중 어느 것이 실패합니까? 'show engine innodb status '는 중도에 묻혀있는 1 톤의 데이터를 "마지막 외래 키 오류"라고한다. 왜 당신이 1005/150을 얻는 지에 대한 자세한 내용을 알게 될 것입니다. –
'오류 : 오류 1005 :'Finance.Grant '(errno : 150)' – FinanceGardener
테이블을 만들 수 없으며 구문을 보면 권한 부여 테이블의 InstrumentGrant FK에있는 '(ID, ID)'비트가 표시됩니다. 펑키 보인다. 같은 필드에서 FK를 두 번 할 수 있는지 확신하지 못합니다. –