Upewnij się, że baza danych jest spójna.
Zakładając, że nie przeprowadziłeś migracji danych z poprzedniej bazy danych MySQL i pracujesz w trybie programistycznym (nie produkcyjnym), więc nie musisz się martwić o zachowanie danych:
- Zmień nazwę migracji z powrotem na
1.sql
. Tylko dlatego, że wykonałeś migrację w poprzedniej bazie danych, nie oznacza to, że jeśli zamierzasz przeprowadzić ją w zupełnie nowej bazie danych, jest to druga ewolucja:w przypadku nowej bazy danych nadal jest to pierwsza. - Zadeklaruj kolumny klucza podstawowego w następujący sposób:
id bigserial primary key
i usuńconstraint
. - Upewnij się, że masz pustą bazę danych w PostgreSQL. Usuń bazę danych i utwórz ją ponownie (
dropdb
,createdb
). - Uruchom migrację bazy danych i obserwuj wyniki, aby upewnić się, że migracja została wykonana. Zobacz Zarządzanie zmianami w bazach danych .
- Użyj PgAdmin lub podobnego narzędzia, takiego jak Toad Extension for Eclipse aby sprawdzić, czy struktura bazy danych została poprawnie utworzona.
Alternatywnie możesz dowiedzieć się, że Flyway zapewnia bardziej kompleksowe podejście do migracji baz danych. Istnieje wtyczka dla Play Framework.
Aby uniknąć wyjątku Error getting sequence nextval
, właściwie opisz definicje klas jednostek w następujący sposób:
@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; }
Sprawdź bazę danych, aby upewnić się, że sequenceName
to nazwa sekwencji utworzonej przez PostgreSQL.
Aby uzyskać więcej informacji, zobacz:
- Ebean wygląda za złą nazwę sekwencji w Play Framework 2
- Konfiguruj JPA aby PostgreSQL generował wartość klucza głównego
- EJB3 JPA:3 sposoby generowania klucza podstawowego przez @GeneratedValue
- PersistenceException:Błąd podczas pobierania następnej sekwencji
- Play Framework:Błąd podczas pobierania kolejnej sekwencji przy użyciu bazy danych H2 w pamięci
- Typ adnotacji GeneratedValue