2013-05-02 11 views
8

zrobiłem uruchomić tę kwerendę do genereate changelogFile w formacie .sqlJak wygenerować plik changlogFile in.sql?

 
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=*** 

dostaję następujący błąd

 
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' 

Czy to możliwe, aby wygenerować changelogfile w .sql mrówczanu?

Odpowiedz

6

From the manual:

diffChangeLog Zapisuje Zmian XML do aktualizacji bazy danych baza do docelowej bazy danych na standardowe wyjście

(kopalnia nacisk)

Więc --changeLogFile określa nazwa wyjścia XML, a nie wynik SQL.

Najpierw należy utworzyć XML. Następnie można wygenerować skrypt SQL za pomocą np. zastosowanie go do pustej bazy danych za pomocą komendy updateSQL. Następnie Liquibase zrobi z tego skrypt SQL.

+0

Właściwie nie trzeba pustą bazę danych. Każde polecenie liquibase z postfiksem SQL oznacza wyprowadzenie kodu SQL bez faktycznego zastosowania zmian. Użytkownik może dodać to do wiersza poleceń: '> diff.sql', aby przekierować wyjście do pliku. Tak więc do sumarycznego, najpierw uruchom diffChangeLog, aby wygenerować dziennik zmian w formacie XML. Następnie uruchom polecenie updateSQL> diff.sql, aby wygenerować kod SQL dla aktualizacji. – dnang

+0

@dnang Czy próbowałeś tego? Do czego zmieniłbyś bazową bazę danych? W rzeczywistości wymagana jest pusta baza danych. –

Powiązane problemy