首先,有一點背景。我有一套Java應用程序,一些基於JPA,一些不是。要創建我的數據庫,我正在使用Hibernates模式導出爲使用JPA的用戶生成創建腳本。那些不使用JPA我手動生成腳本。然後在使用ANT安裝應用程序時運行這些程序。對於更新,應用程序安裝程序只是將更新腳本應用於數據庫。Can Flyway或Liquibase可以生成更新腳本,而不是直接更新數據庫?
爲了改進數據庫更新的管理我一直在尋找Flyway和Liquibase。兩者似乎都差不多要做我想做的事情(旁白:因爲我們有所有已有的SQL/DDL腳本,所以我現在更喜歡Flyway)。我能看到的問題是它們都直接更新數據庫。這對很多安裝都很好,但不是全部。
我想要做的是對數據庫運行Flyway/Liquibase並生成一個更新腳本,該腳本包含使數據庫保持最新所需的所有更新 - 包括Flyway/Liquibase需要對其自己的表進行的任何更改。這將允許我(或更重要的是數據庫管理員)在應用程序之外運行更新腳本來更新數據庫。然後,我可以在我的應用程序中使用Flyway/Liquibase純粹驗證數據庫是最新的。
是否可以使用Flyway或Liquibase或任何其他工具做到這一點?
liquibase我最喜歡的一個特性是它能夠生成SQL腳本。我使用這個與偏執DBA的誰否認我訪問:-)對於演示請參閱:http://stackoverflow.com/questions/8397488/comparing-databases-and-genrating-sql-script-using-liquibase/ –