2011-08-02 32 views
7

Tôi đã đọc về cách bạn có thể tạo ra changelog.xml từ một lược đồ hiện có. Đó là tốt, nhưng tôi có hệ thống hiện tại mà tôi không muốn chạm vào, ngoại trừ việc mang lại những thay đổi mới. Tôi cũng có các hệ thống hoàn toàn mới yêu cầu tất cả các thay đổi được áp dụng.sử dụng liquibase trên lược đồ hiện có

Vì vậy, tôi muốn nhận được liquibase để chỉ thực hiện di chuyển từ changeset X khi chạy trên một hệ thống hiện có. I E. DB của hệ thống đó đang sửa đổi X-1 (nhưng không có bảng sys liquibase) và tôi không muốn bất kỳ việc di chuyển trước nào được áp dụng.

Rất cám ơn, Pat

Trả lời

2

Tôi nghĩ đơn giản nhất sẽ được thực hiện thiết lập ban đầu trên một cơ sở dữ liệu trống ở đầu tiên và xuất nhập cảnh (ies) liquibase không chèn vào bảng DATABASECHANGELOG. Sau đó, tôi muốn xuất các mục này và chèn chúng vào một trong các cơ sở dữ liệu đích vào bảng DATABASECHANGELOG của chúng, vì vậy liquibase không thực hiện "thay đổi" ở đó một lần nữa.

Tất nhiên là tôi muốn thử nghiệm tất cả những gì có kiểm tra bãi trên một máy kiểm tra ... :)

+0

Ah, rất đơn giản. Tôi sẽ kiểm tra điều đó. Cảm ơn. – pat

+0

Điều đó làm việc tốt Tommyd, cảm ơn. Cần lưu ý rằng nếu bạn xóa giá trị tổng kiểm tra từ tập lệnh nhập, liquibase sẽ sử dụng những gì có trong cơ sở dữ liệu để tính toán lại lần nữa. Điều quan trọng là phải có mục nhập thay đổi trong DB. Công cụ tuyệt vời. – pat

+0

Rất vui khi được trợ giúp. –

14

Tôi muốn giới thiệu một cách tiếp cận hơi khác nhau, như nhận xét trong này Liquibase forum thread

  1. tạo ra một thay đổi từ lược đồ hiện có của bạn. CLI lỏng có thể làm điều đó cho bạn. Tôi thường lấy kết quả XML và làm mịn nó ra một chút (nhóm liên quan đến những thay đổi thành các thay đổi duy nhất, làm sạch nhà cung cấp cụ thể và vv), nhưng Liquibase hiện hầu hết các legwork.

  2. chạy danh sách thay đổi đó dựa vào cơ sở dữ liệu hiện có (changelogSync lệnh), nhưng chỉ đánh dấu nó là đã áp dụng (mà không thực sự sửa đổi lược đồ).

  3. sử dụng liquibase để áp dụng các thay đổi mới từ thời điểm đó trở đi.

+2

Lệnh để sử dụng cho bước 2 (trong Liquibase 2.x) là 'changelogSync'. –

+0

Cảm ơn antispam và Javid. Đó là điều tốt để biết. – pat

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