Stellen Sie sicher, dass sich die Datenbank in einem konsistenten Zustand befindet.
Angenommen, Sie haben die Daten nicht aus der vorherigen MySQL-Datenbank migriert und arbeiten im Entwicklungsmodus (nicht im Produktionsmodus), sodass Sie sich keine Gedanken über die Erhaltung der Daten machen müssen:
- Benennen Sie Ihre Migration wieder in
1.sql
um . Nur weil Sie die Migration in einer früheren Datenbank durchgeführt haben, bedeutet das nicht, dass es eine zweite Evolution ist, wenn Sie sie in einer komplett neuen Datenbank ausführen werden:Für die neue Datenbank ist es immer noch die erste. - Deklarieren Sie Ihre Primärschlüsselspalten wie folgt:
id bigserial primary key
und entfernen Sie dieconstraint
. - Stellen Sie sicher, dass Sie eine leere Datenbank in PostgreSQL haben. Löschen Sie die Datenbank und erstellen Sie sie neu (
dropdb
). ,createdb
). - Führen Sie Ihre Datenbankmigration aus und beobachten Sie die Ausgabe, um sicherzustellen, dass die Migration ausgeführt wurde. Siehe Verwalten von Datenbankentwicklungen .
- Verwenden Sie PgAdmin oder ein ähnliches Tool wie Toad Extension for Eclipse um zu überprüfen, ob die Datenbankstruktur korrekt erstellt wurde.
Alternativ können Sie herausfinden, dass Flyway bietet einen umfassenderen Ansatz für Datenbankmigrationen. Es gibt ein Plugin für Play Framework.
Um die Ausnahme Error getting sequence nextval
zu vermeiden , kommentieren Sie die Entitätsklassendefinitionen ordnungsgemäß wie folgt:
@Id
@SequenceGenerator(name="product_gen", sequenceName="product_id_seq", allocationSize=1)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="product_gen")
@Column(name="id")
public Long getId() { return id; }
Untersuchen Sie die Datenbank, um sicherzustellen, dass sequenceName
ist der Name der von PostgreSQL erstellten Sequenz.
Weitere Informationen finden Sie unter:
- Ebean sieht aus für falschen Sequenznamen in Play Framework 2
- JPA konfigurieren um PostgreSQL den Primärschlüsselwert generieren zu lassen
- EJB3 JPA:3 Möglichkeiten zum Generieren des Primärschlüssels durch @GeneratedValue
- PersistenceException:Fehler beim Abrufen der Sequenz nextval
- Play Framework:Fehler beim Abrufen der Sequenz nextval mit der In-Memory-Datenbank von H2
- Anmerkungstyp GeneratedValue