2016-04-08 42 views
1

Veritabanıma bazı varsayılan veriler eklemem gerekiyor. Flyway entegrasyonu ile Spring Boot kullanıyorum. Test için H2 kullanıyorum. Üretim için MySQL kullanılacaktır.H2 veritabanında belirli bir UUID nasıl eklenir?

Ayrı Flyway geçiş komut dosyaları hazırladım, böylece varsayılan veri için veritabanına özel şeyler kullanabiliyorum (Tabloları oluşturma genel bir komut dosyasında gerçekleştirilmiştir).

INSERT INTO survey_definition (id, name, period) 
VALUES (0x2D1EBC5B7D2741979CF0E84451C5BBB1, 'disease-activity', 'P1M'); 

nasıl H2 için aynı şeyi yapabilirsiniz: MySQL için

, böyle bir şey var mı?

Yalnızca çalışmakta olan RANDOM_UUID() işlevini buldum, ancak bilinen bir UUID'yi kullanmam gerekiyor çünkü daha fazla ifadede bunu yabancı anahtar olarak kullanıyorum.

+1

farklı kullanma Üretimden daha fazla test için veritabanı, yapımında bir felaket gibi görünüyor. İlk önce test etmediğiniz sürece kodunuzun MySQL üzerinde doğru bir şekilde çalıştığından nasıl emin olabilirsiniz? – tadman

cevap

1

Tüm veritabanları için çalışan bir sözdizimi kullanırsanız en iyisi. Çoğu veritabanının 0x sözdizimini desteklemediğini düşünüyorum.

INSERT INTO survey_definition (id, name, period) 
VALUES ('2D1EBC5B7D2741979CF0E84451C5BBB1', 'disease-activity', 'P1M'); 

Ama bir çapraz veritabanı sözdizimi almak için, (örneğin uuid için) kullanıcı tanımlı bir işlev oluşturulması gerekebilir ve daha sonra kullanmak: H2 için bu işe yarar

INSERT INTO survey_definition (id, name, period) 
VALUES (uuid('2D1EBC5B7D2741979CF0E84451C5BBB1'), 'disease-activity', 'P1M'); 
+0

Kullanıcı tanımlı işlevi daha ayrıntılı olarak açıklayabilir misiniz? Nasıl oluşturulur ve nasıl görünür? –

+0

Veritabanına bağlı. H2 için, bir parametresi olur ve bu parametreyi döndürür. –