【问题标题】:The "cannot be added because it does not have a primary key" bug in NetBeansNetBeans 中的“无法添加,因为它没有主键”错误
【发布时间】:2013-08-08 11:11:16
【问题描述】:

我尝试从我的 MySQL 数据库创建一个实体类。 Netbeans 中的向导给我错误消息“无法添加,因为它没有主键”。但是我的表中有一个主键。这似乎是其他人在本论坛遇到的一个错误:

https://netbeans.org/bugzilla/show_bug.cgi?id=167389

我已经尝试了线程中的建议,但没有得到它的工作。我错过了什么?我可以强制 Netbeans 导入 Entity 类吗?

我使用的是 NetBeans 7.3

这是我的桌子:

CREATE  TABLE IF NOT EXISTS `estelle`.`FrasVal` (
`ID` INT(11) NOT NULL AUTO_INCREMENT ,
`Varde` VARCHAR(45) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL ,
`Kommentar` VARCHAR(255) CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NULL ,
`RegistreratDatum` DATETIME NOT NULL ,
`FrasFragaSvarAlternativ_ID` INT(11) NULL ,
`Anvandare_ID` INT(11) NOT NULL ,
`Patient_ID` INT(11) NOT NULL ,
`FrasFraga_ID` INT(11) NOT NULL ,
PRIMARY KEY (`ID`) ,
UNIQUE INDEX `ID_UNIQUE` (`ID` ASC) ,
INDEX `fk_FrasVal_FrasFragaSvarAlternativ1_idx` (`FrasFragaSvarAlternativ_ID` ASC) ,
INDEX `fk_FrasVal_Anvandare1_idx` (`Anvandare_ID` ASC) ,
INDEX `fk_FrasVal_Patient1_idx` (`Patient_ID` ASC) ,
INDEX `fk_FrasVal_FrasFraga1_idx` (`FrasFraga_ID` ASC) ,
CONSTRAINT `fk_FrasVal_FrasFragaSvarAlternativ1`
FOREIGN KEY (`FrasFragaSvarAlternativ_ID` )
REFERENCES `estelle`.`FrasFragaSvarAlternativ` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_FrasVal_Anvandare1`
FOREIGN KEY (`Anvandare_ID` )
REFERENCES `estelle`.`Anvandare` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_FrasVal_Patient1`
FOREIGN KEY (`Patient_ID` )
REFERENCES `estelle`.`Patient` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_FrasVal_FrasFraga1`
FOREIGN KEY (`FrasFraga_ID` )
REFERENCES `estelle`.`FrasFraga` (`ID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_unicode_ci;

【问题讨论】:

    标签: mysql jsp netbeans


    【解决方案1】:

    我已经尝试了线程中的建议,但没有得到它的工作。

    你确定吗?您发布的代码示例没有显示。如有必要,请更新您的问题以反映问题的实际状态。


    根据the link you provided,一种可能的 (?) 解决方法是将您的表格全部拼写为小写:

    “让我很难过的是,出于某种奇怪的原因, 表名必须全部小写。如果表名混合 如果在反向过程中不会发现关系 工程过程。在我的实验中,我发现 Middlegen 文档对此给出了警告,所以我猜测 Eclipse DALI 插件在幕后使用了 Middlegen。 MySQL 引擎 也应该是 INNODB。”

    还有https://netbeans.org/bugzilla/show_bug.cgi?id=167389#c11

    如果你有大写的外键和 小写表名与引用表的定义不匹配。


    我建议 (1) 使用所有小写的表名和 (2) 确保表引用在外键约束上的拼写相同。

    CREATE  TABLE IF NOT EXISTS `estelle`.`frasval` (
    --                                     ^^^^^^^
     ...
    
    REFERENCES `estelle`.`frasfragasvaralternativ` (`ID` )
    --                    ^   ^    ^   ^
    

    您应该也可以在您的表名中使用下划线_(绝对让事情更具可读性!)。如果您有时间做一些实验,请发表您的结论!

    【讨论】:

    • 感谢您的帮助。嗯,这是一个可怕的错误。我用一对多的关系重做了与该表具有一对一关系的所有表,并让它工作。看来这个错误信息一般是数据库中的错误太多
    【解决方案2】:

    当我得到错误时,我删除了外键,再次添加它们,重新启动 mysql 连接并且它工作了

    【讨论】:

      【解决方案3】:

      这是因为您的字段“ID”名称的第一个字符是大写的。尝试使用“id”。我知道,听起来很傻,但这对我有用。

      【讨论】:

        猜你喜欢
        • 2021-12-01
        • 2011-08-24
        • 1970-01-01
        • 2017-02-12
        • 1970-01-01
        • 2019-03-10
        • 2010-10-24
        • 2013-11-30
        • 1970-01-01
        相关资源
        最近更新 更多