2012-02-23 59 views
5

Tôi đang đánh giá Flyway để sử dụng trong dự án của mình. Các tập lệnh SQL hiện tại của chúng tôi chứa các phần giữ chỗ cho những thứ như các URL sẽ có một tên miền khác nhau tùy thuộc vào môi trường (dev, qa, prod).Trình giữ chỗ hoạt động như thế nào trong Flyway?

Cụ thể, chúng ta có thể có câu lệnh INSERT như

INSERT INTO FEED VALUES ('app.${env.token}.company.org/feed1', 'My Feed'); 

$ {} env.token cần phải được thay thế bằng 'dev', 'qa', hoặc 'prod'.

Chúng tôi có khoảng 50 thuộc tính khác nhau có khả năng cần thay thế trong tập lệnh SQL. Các thuộc tính đều nằm trong một hoặc hai tệp thuộc tính.

Có cách nào để chạy nhiệm vụ di chuyển Flyway Ant sao cho nó kéo mã thông báo và giá trị thay thế từ tệp thuộc tính? Một cái gì đó dọc theo dòng của nhiệm vụ bộ lọc Ant?

Trả lời

9

Hiện tại khi cung cấp trình giữ chỗ làm thuộc tính, tên thuộc tính phải được thêm tiền tố là flyway.placeholders.

Ví dụ $ {} env.token giữ chỗ có thể được chỉ định trực tiếp là tài sản Ant này: flyway.placeholders.env.token

Hiện tại không có sự hỗ trợ cho đi qua một tập tin bất động sản trực tiếp , không sử dụng tiền tố cho tên thuộc tính. Vui lòng nêu vấn đề trong số Issue Tracker. :-)

+1

Axel, bạn có thể thêm giải thích này vào tài liệu tại đây không: https://flywaydb.org/documentation/migration/sql Tôi không thể hiểu đúng cách sử dụng trình giữ chỗ trước khi đọc từ đây. – csonuryilmaz

1

Nếu mã thông báo là subdomain:

INSERT INTO FEED VALUES ('app.${subdomain}.company.org/feed1', 'My Feed'); 

Các giá trị trong flyway.conf:

flyway.url=jdbc:mydb://db 
flyway.user=root 
flyway.schemas=schema1 
flyway.placeholders.subdomain=example 

Hoặc dòng lệnh:

flyway -url=jdbc:mydb://db -user=root -schemas=schema1 -placeholders.subdomain=example migrate 

Sẽ chạy kịch bản như :

INSERT INTO FEED VALUES ('app.example.company.org/feed1', 'My Feed'); 
Các vấn đề liên quan