1

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;
4

3 に答える 3

2

スレッドの提案を試しましたが、うまくいきませんでした。

本気ですか?あなたが投稿したコードサンプルはそれを示していません。必要に応じて、問題の実際の状態を反映するように質問を更新してください。


あなたが提供したリンクによると、可能な(?)回避策は、テーブルをすべて小文字で綴ることです:

「私が苦労したのは、なんらかの理由でテーブル名をすべて小文字にする必要があることです。テーブル名に大文字と小文字が混在していると、リバース エンジニアリング プロセス中に関係が検出されません。実験中に、 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` )
--                    ^   ^    ^   ^

おそらく、テーブル名にもアンダースコアを使用できるはずです_(確実に読みやすくなります!)。実験を行う時間があれば、結論を投稿してください!

于 2013-08-08T11:38:55.587 に答える
0

エラーが発生したとき、外部キーを削除して再度追加し、mysql接続を再起動すると機能しました

于 2017-10-13T09:24:39.113 に答える