Tôi đã học chơi bằng cách làm theo hướng dẫn trên trang web của họ để xây dựng một công cụ viết blog nhỏ.Làm cách nào để quản lý diễn biến cơ sở dữ liệu khi tôi đang sử dụng JPA?
Nó sử dụng JPA và trong đó gọi là Bootstrap Fixtures.Deletemodels(), (hoặc một cái gì đó tương tự).
Về cơ bản, nó nukes tất cả các bảng mỗi khi nó chạy và tôi mất tất cả dữ liệu.
Tôi đã triển khai một hệ thống sản xuất như (sans the nuke statement).
Bây giờ tôi cần triển khai bản cập nhật lớn cho hệ thống sản xuất. Nhiều lớp đã thay đổi, được thêm vào và đã bị xóa. Trong thử nghiệm của tôi tại địa phương, mà không nuking các bảng trên mỗi chạy tôi chạy vào vấn đề đồng bộ. Khi tôi cố gắng viết hoặc đọc từ bảng chơi sẽ ném lỗi. Tôi đã mở mysql và chắc chắn rằng các bảng chỉ được sửa đổi một phần và sửa đổi không chính xác trong một số trường hợp. Ngay cả khi tôi có chế độ DDL được đặt thành "tạo" trong JPA cấu hình của tôi thì dường như không "tìm ra" cách điều chỉnh các thay đổi và sửa đổi lược đồ của tôi cho phù hợp.
Vì vậy, tôi phải đặt lại trong câu lệnh bootstrap để loại bỏ tất cả các bảng của tôi.
Vì vậy, tôi bắt đầu xem xét các diễn biến cơ sở dữ liệu trong Play và đọc một bài viết trên trang web của khung chơi về các diễn biến cơ sở dữ liệu. Bài báo đã nói về các kịch bản phiên bản, nhưng nó nói, "Nếu bạn làm việc với JPA, Hibernate có thể xử lý các diễn biến cơ sở dữ liệu cho bạn một cách tự động. Các diễn biến rất hữu ích nếu bạn không sử dụng JPA".
Vì vậy, nếu JPA có nghĩa vụ phải chăm sóc điều này cho tôi, làm cách nào để triển khai các bản cập nhật lớn cho ứng dụng Play lớn? Cho đến nay JPA đã không thể làm cho các lược đồ thay đổi một cách chính xác và ứng dụng sẽ ném lỗi. Tôi không quan tâm đến việc mất tất cả dữ liệu của tôi để sửa chữa trên dev "Fixtures.deleteModels()" có thể không thực sự được sử dụng trong sản.
Cảm ơn trước, Josh
Ok, vì vậy tài liệu phát chỉ đơn giản là sai. Đây là một letdown như tôi thực sự phụ thuộc vào tính năng này. –
Vậy tôi có thể bật kịch bản tiến hóa trong khi vẫn sử dụng JPA không? Các tài liệu chơi làm cho nó có vẻ như hai là loại trừ lẫn nhau. –
Bạn có ý nghĩa gì khi "bật tập lệnh tiến hóa"? –