Ujistěte se, že databáze je v konzistentním stavu.
Za předpokladu, že jste nemigrovali data z předchozí databáze MySQL a že pracujete ve vývojovém režimu (nikoli v produkčním režimu), nemusíte se starat o zachování dat:
- Přejmenujte migraci zpět na
1.sql
. To, že jste migraci provedli v předchozí databázi, neznamená, že když ji budete provádět ve zcela nové databázi, bude to druhý vývoj:pro novou databázi je to stále první. - Sloupce primárního klíče deklarujte takto:
id bigserial primary key
a odstraňteconstraint
. - Ujistěte se, že máte v PostgreSQL prázdnou databázi. Zrušte databázi a znovu ji vytvořte (
dropdb
,createdb
). - Spusťte migraci databáze a sledujte výstup, abyste se ujistili, že byla migrace provedena. Viz Správa vývoje databáze .
- Použijte PgAdmin nebo podobný nástroj, jako je Toad Extension for Eclipse abyste ověřili, že struktura databáze byla správně vytvořena.
Případně můžete zjistit, že Flyway poskytuje komplexnější přístup k migraci databází. Existuje plugin pro Play Framework.
Aby se předešlo výjimce Error getting sequence nextval
, správně označte definice tříd entit takto:
@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; }
Zkontrolujte databázi a ujistěte se, že sequenceName
je název sekvence vytvořené PostgreSQL.
Další informace naleznete na adrese:
- Ebean vzhled za nesprávný název sekvence v Play Framework 2
- Konfigurovat JPA aby PostgreSQL vygeneroval hodnotu primárního klíče
- EJB3 JPA:3 způsoby generování primárního klíče prostřednictvím @GeneratedValue
- PersistenceException:Chyba při získávání sekvence nextval
- Play Framework:Chyba při získávání další sekvence pomocí databáze v paměti H2
- Typ poznámky GeneratedValue