2013-05-02 16 views
8

BenchanglogFile in.sql biçiminde nasıl oluşturulur?

 
liquibase --driver=com.mysql.jdbc.Driver 
      --classpath=mysql-connector-java-5.1.24-bin.jar 
      --changeLogFile=test_diff.sql 
      --url="jdbc:mysql://localhost/provision" 
      --username=root 
      --password=** 
      diffChangeLog 
      --referenceUrl=jdbc:mysql://localhost/provision_old 
      --referenceUsername=root 
      --referencePassword=*** 

ben hata aşağıdaki almak .sql biçimde changelogFile genereate için bu sorguyu çalıştırmak vermedi

 
Liquibase Update Failed: No serializer associated with the filename or extension 'sql' 
SEVERE 5/2/13 12:50 PM:liquibase: No serializer associated with the filename or extension 'sql' 
java.lang.RuntimeException: No serializer associated with the filename or extension 'sql' 

o .sql format içinde changelogfile üretmek mümkün mü?

cevap

6

From the manual:

diffChangeLog standart dışarı

(vurgu mayın) hedef veritabanına taban veritabanını

Yani

--changeLogFile belirtir güncellemek için Değişiklik Günlüğü XML yazar XML çıktısının adı, bir SQL çıkışı değil.

Önce XML'yi oluşturmanız gerekir. Daha sonra, örn. updateSQL komutunu kullanarak boş bir veritabanına uygulanması. Sonra Liquibase bunun dışında bir SQL betiği oluşturacaktır.

+0

bakınız Can. SQL postfix ile herhangi bir liquibase komutu, gerçekte değişiklikleri uygulamadan SQL'in çıkarılması anlamına gelir. Kullanıcı bunu komut satırına ekleyebilir: çıkışı bir dosyaya yönlendirmek için: '> diff.sql'. Özetle, ilk olarak XML biçiminde changelog oluşturmak için diffChangeLog çalıştırın. Ardından, güncelleme için SQL'i oluşturmak için updateSQL> diff.sql dosyasını çalıştırın. – dnang

+0

@dnang Bunu denediniz mi? Temel veritabanınızı neye karşı ayırırsınız? Boş bir veritabanı gereklidir. –

İlgili konular