Mysql NetBeans 6.7测试版-为什么它认为某些表没有主键?
我正在使用NetBeans 6.7 Beta从MySQL(版本“5.0.45-log”)数据库创建实体类。NetBeans接受大多数表,但一致地拒绝某些表(我看不出模式),说它们“没有主键”。所有表都使用InnoDB引擎。所有表都有一个或多个列的主键。MySQL查询浏览器和NetBeans的内部数据库导航器都同意所有表实际上都有一个主键。怎么了 以下是生成坏表的脚本片段:Mysql NetBeans 6.7测试版-为什么它认为某些表没有主键?,mysql,netbeans,jpa,primary-key,entity,Mysql,Netbeans,Jpa,Primary Key,Entity,我正在使用NetBeans 6.7 Beta从MySQL(版本“5.0.45-log”)数据库创建实体类。NetBeans接受大多数表,但一致地拒绝某些表(我看不出模式),说它们“没有主键”。所有表都使用InnoDB引擎。所有表都有一个或多个列的主键。MySQL查询浏览器和NetBeans的内部数据库导航器都同意所有表实际上都有一个主键。怎么了 以下是生成坏表的脚本片段: -- ----------------------------------------------------- -- Ta
-- -----------------------------------------------------
-- Table `beamline`.`rq_requests`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `beamline`.`rq_requests` (
`id` INT NOT NULL AUTO_INCREMENT ,
`facility_id` INT NOT NULL ,
`schedule_id` INT NOT NULL ,
`experiment_id` INT NOT NULL ,
`person_id` INT NOT NULL ,
`shift_per_block` INT NOT NULL ,
`block_count` INT NOT NULL ,
`other_requirment` VARCHAR(1023) NULL ,
`submitted` BOOLEAN NOT NULL ,
`date_modified` DATETIME NOT NULL ,
`date_created` DATETIME NOT NULL ,
PRIMARY KEY (`id`) ,
INDEX `fk_rq_requests_xa_facilities` (`facility_id` ASC) ,
INDEX `fk_rq_requests_xa_schedules` (`schedule_id` ASC) ,
INDEX `fk_rq_requests_eec_exp_toc` (`experiment_id` ASC)
# ,INDEX `fk_rq_requests_eec_members` (`person_id` ASC)
,CONSTRAINT `fk_rq_requests_xa_facilities`
FOREIGN KEY (`facility_id` )
REFERENCES `beamline`.`xa_facilities` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
,CONSTRAINT `fk_rq_requests_xa_schedules`
FOREIGN KEY (`schedule_id` )
REFERENCES `beamline`.`xa_schedules` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
,CONSTRAINT `fk_rq_requests_eec_exp_toc`
FOREIGN KEY (`experiment_id` )
REFERENCES `beamline`.`eec_exp_toc` (`exp_id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
# ,CONSTRAINT `fk_rq_requests_eec_members`
# FOREIGN KEY (`person_id` )
# REFERENCES `beamline`.`rq_questions` (`admin_uid` )
# ON DELETE NO ACTION
# ON UPDATE NO ACTION
)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `beamline`.`rq_questions_facilities`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `beamline`.`rq_questions_facilities` (
`facility_id` INT NOT NULL ,
`question_id` INT NOT NULL ,
PRIMARY KEY (`facility_id`, `question_id`) ,
INDEX `fk_req_faciliy_current_question_req_question` (`question_id` ASC) ,
INDEX `fk_rq_questions_facilities_xa_facilities` (`facility_id` ASC),
CONSTRAINT `fk_req_faciliy_current_question_req_question`
FOREIGN KEY (`question_id` )
REFERENCES `beamline`.`rq_questions` (`id` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_rq_questions_facilities_xa_facilities`
FOREIGN KEY (`facility_id` )
REFERENCES `beamline`.`xa_facilities` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `beamline`.`rq_questions_supressed`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `beamline`.`rq_questions_suppressed` (
`facility_id` INT NOT NULL ,
`question_id` INT NOT NULL ,
PRIMARY KEY (`facility_id`, `question_id`) ,
INDEX `fk_req_facility_suppressed_question_req_question` (`question_id` ASC) ,
INDEX `fk_rq_questions_suppressed_xa_facilities` (`facility_id` ASC),
CONSTRAINT `fk_req_facility_suppressed_question_req_question`
FOREIGN KEY (`question_id` )
REFERENCES `beamline`.`rq_questions` (`id` )
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_rq_questions_suppressed_xa_facilities`
FOREIGN KEY (`facility_id` )
REFERENCES `beamline`.`xa_facilities` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
有什么好处?提前感谢。问题已解决;xa_设施的外键是INT(11),而xa_设施的主键是INT(4)。哼 我已经试过运行您的查询(NB6.5.1),它们似乎运行得很好。我必须注释掉所有外键约束,所以它不是精确的复制品 考虑到这一点,您是否可能没有创建所有引用表(xa_设施、rq_问题等)?它们的结构是否合理
我建议将来将关系约束分离到单独的脚本中,以便始终确保在所有表都存在之后创建它们。这不是NetBeans错误报告吗?