2015-11-04 5 views
5

मैं अपने डीबी माइग्रेशन को संभालने के लिए फ्लाईवे कमांड-लाइन टूल का उपयोग कर रहा हूं। अब तक सभी माइग्रेशन एसक्यूएलफ्लाईवे जावा-आधारित माइग्रेशन कैसे बनाएं

कॉन्फ़िग फ़ाइल (केवल इस्तेमाल किया विकल्प) कर रहे हैं:

flyway.url=jdbc:postgresql://db.host 
flyway.user=user 
flyway.password=password 

flyway.table=flyway_migrations 

flyway.locations=filesystem:/home/........./sql/migrations 

flyway.sqlMigrationPrefix=update 
flyway.validateOnMigrate=false 
flyway.outOfOrder=true 

कि पूरी तरह से काम करता है।

लेकिन अभी के लिए मुझे एक जावा-आधारित माइग्रेशन जोड़ने की आवश्यकता है। और मैं वास्तव में परेशान हूं, मुझे कोई भी उदाहरण उदाहरण नहीं मिल रहा है। संकलन कैसे करें, जावा माइग्रेशन कहां रखा जाए।

मैं आधिकारिक दस्तावेज से सरल प्रवास स्तरीय कोशिश की है:

package db.migration; 

import org.flywaydb.core.api.migration.jdbc.JdbcMigration; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 

/** 
* Example of a Java-based migration. 
*/ 
public class V50_121_1__update_notes implements JdbcMigration { 
    public void migrate(Connection connection) throws Exception { 
     PreparedStatement statement = 
      connection.prepareStatement("INSERT INTO test_user (name) VALUES ('Obelix')"); 

     try { 
      statement.execute(); 
     } finally { 
      statement.close(); 
     } 
    } 
} 

लेकिन आगे क्या करना है? कोशिश संकलन:

javac -cp "./flyway-core-3.2.1.jar" V50_121_1__update_notes.java 
jar cf V50_121_1__update_dataNode_notes.jar V50_121_1__update_dataNode_notes.class 

और फिर अलग-अलग स्थानों के लिए है कि जार डाल, कोई असर नहीं।

फ्लाईवे जानकारी - माइग्रेशन को न देखें।

तो सबसे सरल जावा-आधारित माइग्रेशन कैसे बनाएं। मैं मैवेन, या कुछ इसी तरह का उपयोग नहीं करना पसंद करूंगा। बस साधारण जार फ़ाइल (???) जिसे फ्लाईवे कमांड-लाइन टूल द्वारा उठाया जाता है।

धन्यवाद।

उत्तर

1

सुनिश्चित करें कि आपकी .class फ़ाइल आपकी .jar फ़ाइल फ़ाइल के अंदर एक डीबी/माइग्रेशन निर्देशिका में है और आपकी .jar फ़ाइल आपके फ्लाईवे इंस्टॉलेशन की/jars निर्देशिका में रखी गई है।

flyway.locations भी db.migration सेट किया जाना चाहिए, फाइल सिस्टम:/घर /........./ एसक्यूएल/माइग्रेशन

+0

धन्यवाद। स्थानों पर db. माइग्रेशन जोड़ना, जो मुझे याद आया –

+0

@ वादिम कोवलेंको भी इसी तरह के मुद्दे का सामना कर रहा है, क्या आप कृपया मेरी मदद कर सकेंगे। मैंने फ्लाईवे.एलोकेशन में डीबी/माइग्रेशन जोड़ा है और जार फ़ाइल को जार फ़ोल्डरों के अंदर रखा गया है लेकिन फिर भी एक ही त्रुटि का सामना कर रहा है "स्थान में एसक्यूएल माइग्रेशन के लिए स्कैन करने में असमर्थ: क्लासपाथ: डीबी/माइग्रेशन", कृपया मुझे बताएं कि क्या आप किसी भी अन्य विवरण की आवश्यकता है –

+0

@AdarshHDDev वर्गपाथ - डीबी/माइग्रेशन के अंदर स्थित जार फ़ाइल के अंदर एसक्यूएल और/या कक्षा फाइलें करता है? –

संबंधित मुद्दे