使用工作台我的数据库出现问题

时间:2014-05-08 05:16:24

标签: mysql

我正在创建一个测试数据库来训练并遇到这个问题 -

"Schema Creation Failed: Can't create table 'db_2_5b129.tbluserassignment' (errno: 150): "

特定表的代码是 -


- 表tblUserAssignment


CREATE TABLE IF NOT EXISTS `tblUserAssignment` (  
`assignment_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,  
`user_id` INT NOT NULL,  
`supervisor_id` INT NOT NULL,  
`position_id` INT NOT NULL,  
`department_id` INT NOT NULL,  
`start_date` DATE NOT NULL,  
`end_date` DATE NOT NULL,  
`date_added` DATE NOT NULL,  
`date_modified` DATETIME NOT NULL,  
`date_deleted` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,         
PRIMARY KEY (`assignment_id`),  
INDEX `fk_tblUserAssignment_tblUserPhone1_idx` (`user_id` ASC),  
INDEX `fk_tblUserAssignment_tblUserPositions1_idx` (`position_id` ASC),  
CONSTRAINT `fk_tblUserAssignment_tblUserPhone1`  
FOREIGN KEY (`user_id`)  
REFERENCES `tblUserPhone` (`user_id`)  
ON DELETE NO ACTION  
ON UPDATE NO ACTION,  
CONSTRAINT `fk_tblUserAssignment_tblUserPositions1`  
FOREIGN KEY (`position_id`)  
REFERENCES `tblUserPositions` (`position_id`)  
ON DELETE NO ACTION  
ON UPDATE NO ACTION)  
ENGINE = InnoDB;

有人可以看一遍并指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

问题在于forign字段类型

之间的差异

tblUserPositions.position_id INT UNSIGNED NOT NULL AUTO_INCREMEN

tblUserAssignment.position_id INT NOT NULL,`

编辑1

编辑2

这个测试&工作正常

CREATE TABLE `tbluserphone` (
    `contact_information_id` INT(10) UNSIGNED NOT NULL,
    `user_id` INT(11) NOT NULL,
    `phone_number` VARCHAR(20) NOT NULL,
    `phone_type_id` INT(11) NOT NULL,
    `date_added` DATETIME NOT NULL,
    `date_modified` DATETIME NOT NULL,
    `date_deleted` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`contact_information_id`, `user_id`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;

CREATE TABLE `tbluserassignment` (
    `assignment_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `contact_information_id` INT(10) UNSIGNED NOT NULL,
    `user_id` INT(11) NOT NULL,
    `supervisor_id` INT(11) NOT NULL,
    `position_id` INT(10) UNSIGNED NOT NULL,
    `department_id` INT(11) NOT NULL,
    `start_date` DATE NOT NULL,
    `end_date` DATE NOT NULL,
    `date_added` DATE NOT NULL,
    `date_modified` DATETIME NOT NULL,
    `date_deleted` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    PRIMARY KEY (`assignment_id`),
    INDEX `fk_tblUserAssignment_tblUserPhone1_idx` (`user_id`),
    INDEX `fk_tblUserAssignment_tblUserPositions1_idx` (`position_id`),
    INDEX `contact` (`contact_information_id`),
    CONSTRAINT `FK_tbluserassignment_tbluserpositions`
         FOREIGN KEY (`position_id`)
         REFERENCES `tbluserpositions` (`position_id`) ON UPDATE NO ACTION ON DELETE NO ACTION,
   CONSTRAINT tbluserassignment_fkz1
         FOREIGN KEY (contact_information_id, user_id)
         REFERENCES tbluserphone (contact_information_id, user_id)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB;

(contact_information_id,user_id) - 字段应该相同,就像在主键定义中一样