Ich wollte ein Projekt mit Hibernate, Federmvc und H2 als (vorerst) in der Speicher-DB einrichten. Wenn alles bootet (in Jetty) bekomme ich Fehler, dass die Tabellen noch nicht vorhanden sind.H2 In-mem-DB mit Hibernate-Set zum Erstellen von mir Tabelle nicht gefunden Fehler
Dies ist der Fehler, den ich bekommen:
Okt 09, 2013 3:42:47 PM org.hibernate.tool.hbm2ddl.SchemaExport execute
INFO: HHH000227: Running hbm2ddl schema export
Okt 09, 2013 3:42:47 PM org.hibernate.tool.hbm2ddl.SchemaExport perform
ERROR: HHH000389: Unsuccessful: alter table PUBLIC.Object drop constraint FK_9sd2x4ehbugdjyrp1xqmsjw00
Okt 09, 2013 3:42:47 PM org.hibernate.tool.hbm2ddl.SchemaExport perform
ERROR: Tabelle "OBJECT" nicht gefunden
Table "OBJECT" not found; SQL statement:
...
Das wäre in Ordnung, wenn ich Hibernate nicht gesetzt war wie folgt aus:
hibernate.hbm2ddl.auto=create
und die Verbindungszeichenfolge für H2 ist dies:
jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=TRUE
ich an die DB mit IntelliJ verbinden kann, so dass es dort ist ..
Ich erwartete Hibernate, um die Tabellen für mich und dann die Einschränkungen und was auch immer sonst folgt, aber aus irgendeinem Grund nicht zu tun. Könnte es ein Benutzerrecht sein? Dies sind die Benutzereinstellungen, die ich eingerichtet habe:
jdbc.user=sa
jdbc.pass=
Jede Hilfe ist willkommen! Thanks :)
UPDATE
Wenn ich die Verbindungszeichenfolge, um diese Änderung:
jdbc.url=jdbc:h2:~/db/database.db;DB_CLOSE_ON_EXIT=TRUE;INIT=create schema IF NOT EXISTS generic;
es scheint zu funktionieren. Aber warum funktioniert es nicht im Speicher und warum hat es vorher nicht funktioniert, als ich das Standardschema auf "public" gesetzt habe (was schon da war, also dachte ich, könnte auch einfach meine Sachen dort dumpen ...) IDK!
Warum Hibernate fallen nicht Fremdschlüssel in einer leeren Datenbank? Versuchen Sie, die SQL-Protokollierung zu aktivieren, um zu sehen, wie Hibernate versucht, das vorhandene Datenbankschema zu untersuchen. –
es hat nicht einmal versucht, zuerst eine Tabelle zu erstellen oder zu prüfen, ob man da ist, es hat gerade versucht, die Schlüssel direkt fallen zu lassen. Hölle, ich weiß nicht, warum es das tut. Ich bekomme immer noch den gleichen Fehler beim "ersten" Lauf auf der DB, aber danach sind die Tabellen da und es funktioniert mit ihnen ... sehr seltsam – pascalwhoop
Der Fehler schlägt vor, dass Sie nicht die Datenbank verwenden, die Sie denken. Überprüfen Sie die Konfiguration noch einmal, setzen Sie Haltepunkte und debuggen Sie dies. –