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 keyen 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