Frage

Ich habe meiner persistenten Klasse im Ruhezustand ein Zeichenfolgenfeld hinzugefügt und die Anwendung neu gestartet.Es startete SchemaUpgrade und führte zu mehreren Fehlern wie diesem:

2011-02-03 13:04:06,522 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Unsuccessful: alter table table_name add index FKCD10932052C35B33 (previewExample_id), add constraint FKCD10932052C35B33 foreign key (previewExample_id) references preview (id)
2011-02-03 13:04:06,522 [main] ERROR org.hibernate.tool.hbm2ddl.SchemaUpdate - Can't create table 'dbName.#sql-59c_1cc' (errno: 150)

Die Spalte wurde jedoch zur Datenbank hinzugefügt.Und alles scheint gut zu funktionieren.Abgesehen von diesen Fehlern, die jedes Mal auftreten, starte ich die Anwendung.

Was kann ich tun, um diese Indizes zu erstellen?DB ist MySQL, Hibernate-Version ist 3.0.

War es hilfreich?

Lösung

Es klingt nicht nach einem Problem im Ruhezustand.Wenn Sie versuchen, manuell auszuführen, werden Sie feststellen, dass das gleiche Problem auftritt.Wenn ich mir die MySQL-Handbücher ansehe, sehe ich, dass "errno: 150" bedeutet:

Wenn Sie eine Tabelle neu erstellen, die gelöscht wurde, muss sie eine Definition haben, die den Fremdschlüsseleinschränkungen entspricht, auf die sie verweist.Es muss die richtigen Spaltennamen und -typen haben und Indizes für die Schlüssel, auf die verwiesen wird, wie bereits erwähnt.Wenn diese nicht erfüllt sind, gibt MySQL die Fehlernummer 1005 zurück und verweist auf den Fehler 150 in der Fehlermeldung.

http://dev.mysql.de / doc / refman / 5.5 / de / innodb-fremdschlüsselbeschränkungen.html

Andere Tipps

Stellen Sie außerdem sicher, dass TABLE_COLLATION zwischen der referenzierten und der referenzierten Spalte identisch ist. Andernfalls wird auch dieser Fehler angezeigt.

Für mich wurde das Problem behoben, indem alle Tabellen Engine in InnoDB geändert wurden.

So geht's manuell:

https://stackoverflow.com/a/9492183/1988704

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top