7

Bir Play projesini Sürüm 2.3.4'den 2.4.2'ye geçirdim. Projeler JPA (Hazırda Beklet) ve Evolutions kullanıyor. Veritabanını bazı örnek verilerle dolduran ilk Evrim SQL komut dosyası var. Bu betik artık çalışmıyor, çünkü Evrimler komut dosyaları artık Hazırda Bekletmeden önce tabloları oluşturuyor, bu da bir hataya neden oluyor. Bu istenen bir davranış mı? İcra sırasını değiştirmenin bir yolu var mı?Yürütme Çerçevesi'ndeki Evolutions ve JPA'yı Oynatın 2.4

cevap

0

Evrimler, düz SQL komut dosyaları ile oluşturma ve güncelleştirme veritabanı hakkında. Eğer veri tabloları kendisi üretir bazı çerçeve kullanmak, yani hazırda gibi, o zaman ben de benzer var

başlangıçta üzerinde

Dolgu veritabanını (sadece açılımlar veya autogeneration kapatın ve kullanmak) açılımlar kapatmanız gereklidir Cassandra'da sorun, ne yaptım - sadece CQL dosyasını okuyan ve yürüten bir kod oluşturun ve bu kodu gerçek veri tablolarını oluşturduktan sonra çalıştırın. - Hazırda zaten bu özelliğe sahip Gördüğünüz gibi

Eğer Sınıfyolu kök /import.sql dosya içine özel bir SQL kodu koymak gerekir:

import.sql adlı bir dosya kök varsa sınıf yolu ('/import.sql') Hazırda bekletme, veritabanı şemasının oluşturulmasından sonra dosyadan okunan SQL deyimlerini yürütür.

+0

Ayrıntılı yanıt için teşekkürler, ama ben aynı fikirde değilim. Play dokümanı şöyle diyor: "İlişkisel veritabanı kullandığınızda, veritabanı şeması evrimlemelerinizi izlemek ve düzenlemek için bir yönteme ihtiyacınız var". Bu veritabanına nasıl erişileceğini söylemiyor. Benim düşünceme göre Evrimler, Hazırda Bekletme için mükemmel bir ek oldu çünkü Hazırda Bekletme yalnızca sınırlı göç olanaklarına sahip. Ve önemli olan, Play’de yıllarca çalıştı, bu yüzden bir hata olduğunu düşünüyorum. – linsenfips

+0

"Hazırda bekletme tabloları oluşturur" yazdınız. Bu, hazırda bekletme veritabanınızı düzenlemek anlamına gelir. Tek bir veritabanı güncellemesi mekaniği - evrim veya hazırda bekleme tablosu oluşturma kullanmanız gerekir. Evrimi kullanmak istiyorsanız, Hazırda bekletme tablosu nesnesini kapatın: http://stackoverflow.com/questions/221379/hibernate-hbm2ddl-auto-update-in-production. –

+0

UYARI: Bir üretim veritabanının şemasını otomatik olarak güncellemek için SchemaUpdate'i kullanmaya çalışan Hazırda Bekleme kullanıcılarını gördük. Bu, hızla felaketle sonuçlanabilir ve DBA'nız tarafından izin verilmez. –