INIT=RUNSCRIPT 和相对路径的问题

2022-08-31 16:53:09

我对源路径(src/main src/test)使用maven约定,并且在src/main/resources/scripts中有我的sql脚本。

我想用H2内存运行我的应用程序,我想使用jdbc url来初始化我的数据库:

database.url=jdbc:h2:mem:;INIT=RUNSCRIPT FROM 'src/main/resources/scripts/create.sql';

我的问题是这个相对路径(src/main/...)不起作用,如果init=runscript命令不针对任何内容,H2也不会崩溃。

有人知道我应该用什么路径来使这项工作吗?

谢谢


答案 1

您可以使用以下网址:
"jdbc:h2:mem:sample;INIT=RUNSCRIPT FROM 'classpath:scripts/create.sql'"

有了这个,就可以从类路径运行脚本。因此,你可以把它放在你的maven(或其他)项目中,src/main/resources/scripts或src/test/resources/scripts。


答案 2

我建议尝试为初学者使用绝对路径,只是为了检查一切正常。之后,检查您的类路径。例如,假定 是编译类的位置,并且位于类路径上。bin/main/resources/scripts/create.sqlbin

由于源代码所在的位置通常不在类路径上,因此这可能是问题的根源。src


推荐