2015-03-12 31 views
8

Tôi đang sử dụng đường bay với gradle, tôi đã chạy một trong những di chuyển thủ công bên trong giao diện điều khiển cơ sở dữ liệu, tôi muốn chạy đường bay, nhưng yêu cầu nó bỏ qua một phiên bản di chuyển cụ thể ở giữa tất cả những người khác. Điều này có thể được thực hiện?Làm thế nào để bỏ qua một di chuyển cụ thể với đường bay?

Trả lời

6

Bạn sẽ phải hack nó một chút để có được nó để làm việc, vì vậy tôi không khuyên bạn nên cách tiếp cận này, nhưng nó sẽ làm việc trong một pinch.

Tôi đã chỉ thử nghiệm điều này với Maven, nhưng tôi khá chắc chắn nó sẽ làm việc với Gradle quá.

  1. Di chuyển lên cho đến khi phiên bản trước khi một trong những bạn áp dụng bằng tay

    # Assuming you applied 01.002 manually 
    $ mvn flyway:migrate -Dflyway.target=01.001 
    
  2. Chèn một hàng cho kịch bản mà bạn áp dụng

    -- Make sure these vals closely replicate those from other rows 
    insert into schema_version(installed_rank, version, description, type, script, checksum, installed_by, installed_on, execution_time, success) 
    values (2, '01.002', 'static_data', 'SQL', 'V01/V01.002__static_data.sql', null, 'username', current_timestamp, 0, true); 
    
  3. Sửa chữa các schema_version checksum

    $ mvn flyway:repair 
    
  4. Áp dụng công nhập cư khác

    $ mvn flyway:migrate -Dflyway.validateOnMigrate=false -Dflyway.outOfOrder=true 
    

Hai -D thuộc tính có thể không cần thiết, tùy thuộc vào việc bạn có các insert đúng hay không. Đường bay có thể không đồng ý với mô tả tập lệnh của bạn, ví dụ, ngay cả khi kiểm tra là chính xác.

+0

cách tiếp cận này phù hợp với tôi. – hidekuro

+0

Đôi khi không cần chèn 'chèn' được tạo thủ công (ví dụ: nếu tập lệnh nâng cấp của bạn không thành công khi thêm cột hiện có hoặc thả bảng đã loại bỏ). Chỉ cho phép Flyway thất bại và sửa dòng mới nhất bằng cách đặt 'success = 1'. Bạn có thể thực hiện thất bại an toàn với rác ở đầu tập lệnh cập nhật (ngăn chặn các hành động nguy hiểm hơn nữa). Chỉ cần loại bỏ rác trước khi 'flyway: repair' – gavenkoa

0

Không được đề xuất Nhưng nếu bạn vẫn muốn:

1) Chạy đường bayĐiều hướng, để di chuyển không thành công.
2) Theo cách thủ công, hãy cập nhật bảng meta đường dẫn (cột thành công) cho phiên bản di chuyển cụ thể đó.
3) Chạy đường bayMigrate lần nữa.
4) Xong, đường bay sẽ bắt đầu với phiên bản di chuyển tiếp theo.

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