2012-11-28 32 views
17

Tôi bắt đầu sử dụng Flyway trong dự án hiện tại của mình để di chuyển cơ sở dữ liệu và tôi rất thích nó. Tôi hiện đang sử dụng Oracle trong PROD- và Derby trong TEST-Environment.Cách tốt nhất cho tập lệnh sql "cơ sở dữ liệu cụ thể" với Flyway

Khá sớm, tôi đã chạy trong vấn đề về các lệnh sql cụ thể của cơ sở dữ liệu, ví dụ:

  • ALTER TABLE T1 MODIFY F1 VARCHAR(256); trên Oracle vs
  • ALTER TABLE T1 ALTER F1 SET DATA TYPE VARCHAR(256); trên Derby.

Tôi không thể thấy cách viết "bảng thay đổi bảng trung gian thay đổi nhà cung cấp" sql.

Cách tốt nhất để giải quyết vấn đề này bằng Flyway là gì?

Trả lời

25

Bạn có thể sử dụng thuộc tính flyway.locations.

Trong thử nghiệm trong sẽ trông như thế này:

flyway.locations=sql/common,sql/derby 

và trong sản:

flyway.locations=sql/common,sql/oracle 

Sau đó, bạn có thể có những điều khoản chung (V1__Create_table.sql) trong bản thông thường và khác nhau của DB tuyên bố cụ thể (V2__Alter_table.sql) trong các vị trí cụ thể của db.

Một giải pháp tốt hơn nữa, theo ý kiến ​​của tôi, là có cùng một DB trong sản và thử nghiệm. Có, bạn mất một chút hiệu suất, nhưng mặt khác bạn cũng loại bỏ một sự khác biệt (và nguồn tiềm năng của các lỗi) giữa các môi trường.

+0

Cảm ơn Axel vì đã trả lời nhanh! – Peti

+0

Có lẽ đáng để đặt ở đâu đó trong [FAQ FAQ] (http://flywaydb.org/documentation/faq.html)? – Peti

+4

Xong: http://flywaydb.org/documentation/faq.html#db-specific-sql –

0

Sự khác biệt về SQL giữa Oracle và một số cơ sở dữ liệu trên máy tính để bàn này là rất nhỏ. Có thể cho một nhà phát triển chèn mã tùy chỉnh để thực hiện một số lần rút gọn năng động của SQL trong thời gian chạy dựa trên môi trường (ví dụ: xóa chỉ định vùng bảng) không?

Tôi thích cách tiếp cận này dựa vào từng nhà phát triển để giữ đồng bộ hai bộ SQL theo cách thủ công.

+0

Bạn nên đặt câu hỏi này như một câu hỏi riêng. Đó là một ý tưởng thú vị. – Peti

+0

ý tưởng hay Pei - tạo câu hỏi: http://stackoverflow.com/questions/32121083/customizing-sql-executed-per-environment – dropofahat

+0

Cool ... Axel Fontaine đã trả lời :-) – Peti

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