Zorg ervoor dat de database consistent is.
Ervan uitgaande dat u de gegevens uit de vorige MySQL-database niet hebt gemigreerd en dat u in de ontwikkelingsmodus werkt (niet in de productiemodus), zodat u zich geen zorgen hoeft te maken over het bewaren van gegevens:
- Hernoem uw migratie terug naar
1.sql
. Alleen omdat je de migratie in een eerdere database hebt uitgevoerd, betekent dit niet dat wanneer je het in een geheel nieuwe database gaat uitvoeren, dit een tweede evolutie is:voor de nieuwe database is het nog steeds de eerste. - Declareer uw primaire sleutelkolommen als volgt:
id bigserial primary key
en verwijder deconstraint
. - Zorg dat je een lege database hebt in PostgreSQL. Zet de database neer en maak deze opnieuw (
dropdb
,createdb
). - Voer uw databasemigratie uit en bekijk de uitvoer om te controleren of de migratie is uitgevoerd. Zie Database-evoluties beheren .
- Gebruik PgAdmin of een vergelijkbare tool zoals Toad Extension for Eclipse om te controleren of de databasestructuur correct is gemaakt.
U kunt er ook achter komen dat Flyway biedt een uitgebreidere benadering van databasemigraties. Er is een plug-in voor Play Framework.
Om de uitzondering te vermijden Error getting sequence nextval
, annoteer de definities van entiteitsklassen als volgt:
@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; }
Inspecteer de database om er zeker van te zijn dat sequenceName
is de naam van de reeks gemaakt door PostgreSQL.
Voor meer informatie zie:
- Ebean-looks voor verkeerde volgordenaam in Play Framework 2
- JPA configureren om PostgreSQL de primaire sleutelwaarde te laten genereren
- EJB3 JPA:3 manieren om primaire sleutel te genereren via @GeneratedValue
- PersistenceException:fout bij het ophalen van de volgende reeks
- Play Framework:fout bij ophalen van sequentie nextval met H2 in-memory database
- Annotatietype GeneratedValue