2013-05-02 39 views
8

tôi đã chạy truy vấn này để genereate changelogFile ở định dạng sqlLàm thế nào để tạo ra định dạng inlogql changlogFile?

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

tôi nhận được lỗi sau

 
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' 

Có thể tạo changelogfile trong formate sql?

Trả lời

6

From the manual:

diffChangeLog Viết Change Log XML để cập nhật cơ sở dữ liệu cơ sở để các cơ sở dữ liệu mục tiêu để tiêu chuẩn ra

(tôi nhấn mạnh)

Vì vậy --changeLogFile quy định cụ thể tên của đầu ra XML, không phải là đầu ra SQL.

Trước tiên, bạn phải tạo XML. Sau khi bạn có thể tạo tập lệnh SQL, ví dụ: áp dụng nó vào một cơ sở dữ liệu rỗng bằng cách sử dụng lệnh updateSQL. Sau đó Liquibase sẽ tạo ra một kịch bản lệnh SQL.

+0

Trên thực tế bạn không cần một cơ sở dữ liệu rỗng. Bất kỳ lệnh liquibase nào với một postfix SQL có nghĩa là xuất ra SQL mà không thực sự áp dụng các thay đổi. Người dùng có thể gắn kết điều này vào dòng lệnh: '> diff.sql' để chuyển hướng đầu ra tới một tệp. Vì vậy, để tổng hợp, đầu tiên chạy diffChangeLog để tạo ra các thay đổi trong định dạng XML. Sau đó chạy updateSQL> diff.sql để tạo SQL để cập nhật. – dnang

+0

@dnang Bạn đã thử điều đó chưa? Những gì bạn sẽ diff cơ sở dữ liệu cơ sở của bạn chống lại? Một cơ sở dữ liệu rỗng là thực sự cần thiết. –

Các vấn đề liên quan