Đảm bảo rằng cơ sở dữ liệu ở trạng thái nhất quán.
Giả sử bạn chưa di chuyển dữ liệu từ cơ sở dữ liệu MySQL trước đó và bạn đang làm việc ở chế độ phát triển (không phải ở chế độ sản xuất), vì vậy bạn không phải lo lắng về việc bảo quản dữ liệu:
- Đổi tên quá trình di chuyển của bạn thành
1.sql
. Chỉ vì bạn đã thực hiện quá trình di chuyển trong cơ sở dữ liệu trước đó, không có nghĩa là khi bạn thực thi nó trong một cơ sở dữ liệu hoàn toàn mới, đó là một bước tiến thứ hai:đối với cơ sở dữ liệu mới, nó vẫn là lần đầu tiên. - Khai báo các cột khóa chính của bạn như sau:
id bigserial primary key
và loại bỏconstraint
. - Đảm bảo rằng bạn có một cơ sở dữ liệu trống trong PostgreSQL. Thả cơ sở dữ liệu và tạo lại nó (
dropdb
,createdb
). - Chạy quá trình di chuyển cơ sở dữ liệu của bạn và xem kết quả đầu ra để đảm bảo quá trình di chuyển đã được thực thi. Xem Quản lý diễn biến cơ sở dữ liệu .
- Sử dụng PgAdmin hoặc một công cụ tương tự như Tiện ích mở rộng Toad cho Eclipse để xác minh rằng cấu trúc cơ sở dữ liệu đã được tạo chính xác.
Ngoài ra, bạn có thể biết rằng Flyway cung cấp một cách tiếp cận toàn diện hơn để di chuyển cơ sở dữ liệu. Có một plugin cho Play Framework.
Để tránh ngoại lệ Error getting sequence nextval
, chú thích đúng các định nghĩa lớp thực thể như sau:
@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; }
Kiểm tra cơ sở dữ liệu để đảm bảo rằng sequenceName
là tên của chuỗi được tạo bởi PostgreSQL.
Để biết thêm thông tin, hãy xem:
- Ngoại hình của Ebean tên trình tự sai trong Play Framework 2
- Định cấu hình JPA để cho phép PostgreSQL tạo giá trị khóa chính
- EJB3 JPA:3 cách tạo khóa chính thông qua @GeneratedValue
- PersistenceException:Lỗi khi xem trình tự tiếp theo
- Play Framework:Lỗi khi nhận chuỗi tiếp theo bằng cơ sở dữ liệu H2 trong bộ nhớ
- Loại chú thích GeneratedValue