Se till att databasen är i ett konsekvent tillstånd.
Förutsatt att du inte har migrerat data från den tidigare MySQL-databasen och att du arbetar i utvecklingsläge (inte i produktionsläge), så behöver du inte oroa dig för att bevara data:
- Byt namn på din migrering tillbaka till
1.sql
. Bara för att du körde migreringen i en tidigare databas betyder det inte att när du ska köra den i en helt ny databas är det en andra utveckling:för den nya databasen är det fortfarande den första. - Deklarera dina primärnyckelkolumner så här:
id bigserial primary key
och ta bortconstraint
. - Se till att du har en tom databas i PostgreSQL. Släpp databasen och återskapa den (
dropdb
,createdb
). - Kör din databasmigrering och titta på utdata för att se till att migreringen genomfördes. Se Hantera databasutvecklingar .
- Använd PgAdmin eller ett liknande verktyg som Toad Extension for Eclipse för att verifiera att databasstrukturen skapades korrekt.
Alternativt kan du ta reda på att Flyway ger en mer omfattande metod för databasmigrering. Det finns ett plugin för Play Framework.
För att undvika undantaget Error getting sequence nextval
, annotera entitetsklassdefinitionerna korrekt så här:
@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; }
Inspektera databasen för att se till att sequenceName
är namnet på sekvensen skapad av PostgreSQL.
För mer information se:
- Ebean looks för fel sekvensnamn i Play Framework 2
- Konfigurera JPA för att låta PostgreSQL generera det primära nyckelvärdet
- EJB3 JPA:3 Ways Of Generation Primary Key Through @GeneratedValue
- PersistenceException:Det gick inte att hämta sekvens nextval
- Play Framework:Det gick inte att hämta sekvens nextval med H2-minnesdatabasen
- Annotationstyp GeneratedValue