簡體   English   中英

Spring Boot Profiles-運行sql腳本而不是ddl-auto

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM