Assicurati che il database sia in uno stato coerente.
Supponendo che tu non abbia migrato i dati dal precedente database MySQL e che tu stia lavorando in modalità sviluppo (non in modalità produzione), quindi non devi preoccuparti di preservare i dati:
- Rinomina la tua migrazione in
1.sql
. Solo perché hai eseguito la migrazione in un database precedente, non significa che quando la eseguirai in un database completamente nuovo si tratta di una seconda evoluzione:per il nuovo database, è ancora il primo. - Dichiara le colonne della tua chiave primaria in questo modo:
id bigserial primary key
e rimuovi ilconstraint
. - Assicurati di avere un database vuoto in PostgreSQL. Elimina il database e ricrealo (
dropdb
,createdb
). - Esegui la migrazione del database e osserva l'output per assicurarti che la migrazione sia stata eseguita. Vedi Gestione delle evoluzioni del database .
- Utilizza PgAdmin o uno strumento simile come Toad Extension for Eclipse per verificare che la struttura del database sia stata creata correttamente.
In alternativa, potresti scoprire che Flyway fornisce un approccio più completo alle migrazioni di database. Esiste un plugin per Play Framework.
Per evitare l'eccezione Error getting sequence nextval
, annota correttamente le definizioni delle classi di entità in questo modo:
@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; }
Ispeziona il database per assicurarti che sequenceName
è il nome della sequenza creata da PostgreSQL.
Per ulteriori informazioni vedere:
- Ebean sembra per il nome della sequenza errato in Play Framework 2
- Configura JPA per consentire a PostgreSQL di generare il valore della chiave primaria
- EJB3 JPA:3 modi per generare la chiave primaria tramite @GeneratedValue
- PersistenceException:errore durante il recupero della sequenza nextval
- Play Framework:errore durante il recupero della sequenza nextval utilizzando il database in memoria H2
- Tipo di annotazione GeneratedValue