[英]Spring Boot Profiles - have an sql-script run instead of ddl-auto
我設置了3個配置文件(dev / test / prod)像魔術一樣工作(Java和Spring Boot的新功能)
在我的開發資料中,數據庫是使用
hibernate.ddl-auto
工作很棒...也可以
.hibernate.hbm2ddl.import_files
我用測試數據填充數據庫的女巫
在測試環境中,我想運行一個腳本,該腳本從轉儲中設置數據庫..更像是生產(實體由於某種原因與數據庫不匹配)
所以我嘗試使用:
datasource.data
&& ||
datasource.schema
以不同的組合,帶有file:,類路徑以.....為前綴
當我做:
datasource.data=data.sql
這是說:
'ServletContext resource [/data.sql]' is invalid: The specified resource does not exist
...在.... / src / main / src / main / resources / src / main / resources / META-INF ..中移動文件
我不明白“ ServletContext”是什么意思........
我確實禁用了
hibernate.ddl-auto
通過在該配置文件中將其設置為無
也
hibernate.jpa.generate-ddl
為false,即使在設置ddl-auto時也不需要/不使用
……在我的“谷歌搜索”任務中,我遇到了2014年以來的帖子,並且從那時起出現了一切……
有,我指望;),必須將某些屬性設置為“ runThisScript”,但是我通過文檔獲取了……可能我錯過了一些東西
有人可以指出我正確的方向嗎?
謝謝!
thx @Blagoj為了您的快速響應,該鏈接幫助我..通過將ddl-auto設置為create ..來執行腳本,但是它也是從實體生成的...如何阻止其執行該&&腳本已執行?
thx @luboskrnac為您提供建議! 來看看/使用它! ..讓我感到困擾的是,我必須做錯/從我的觀點出發做得不是很好...在dev中匹配產品.....希望在dev中做到正確並在我進入該狀態時就進行生產可以證明它是正確的;)
...好吧,現在我最終手動建立了測試環境..但是,一旦我知道更多,我將嘗試使其自動化...我看到總有一個解決注入問題的工具;)
使用Flyway或Liquibase之類的數據庫遷移工具來創建初始架構,並進行數據庫架構的增量遷移。 現在重要的一點:在DEV和PROD env中以相同的方式進行操作! 否則,您會遇到麻煩。
初始模式可以借助Hibernate生成。 spring.jpa.hibernate.ddl-auto=create
將通過您的JPA模型創建模式,而logging.level.org.hibernate.SQL=DEBUG
將通過SQL命令創建該模式。 該SQL轉儲可以用作Flyway或Liquibase的初始遷移腳本。
您甚至可以將示例數據插入PROD中(如果您可以將它們隱藏在測試帳戶的后面)。 比起您可以針對PROD實例運行自動化測試而言,它可以方便地驗證重要功能是否在PROD中正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.