【发布时间】:2021-10-21 16:33:01
【问题描述】:
Liquibase 安装附带一个示例目录,您可以使用它来了解不同的命令。这些示例使用 H2 数据库和端口 9090 上的 Web 控制台。不幸的是,端口 9090 不可用。
我在问如何更改脚本启动的示例 H2 数据库使用的 web-conole 端口:
start-h2
端口似乎是由 Liquibase liquibase.example.StartH2Main 模块本身指定的。 H2 似乎不受以下更改的影响:$HOME/.h2.server.properties ...
java -cp h2-1.4.200.jar:liquibase.jar liquibase.example.StartH2Main
Starting Example H2 Database...
NOTE: The database does not persist data, so stopping and restarting this process will reset it back to a blank database
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:567)
at liquibase.example.StartH2Main.startTcpServer(StartH2Main.java:74)
at liquibase.example.StartH2Main.main(StartH2Main.java:28)
Caused by: org.h2.jdbc.JdbcSQLNonTransientConnectionException: Exception opening port "9090" (port may be in use), cause: "java.net.BindException: Address already in use" [90061-200]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:622)
at org.h2.message.DbException.getJdbcSQLException(DbException.java:429)
at org.h2.message.DbException.get(DbException.java:194)
at org.h2.util.NetUtils.createServerSocketTry(NetUtils.java:180)
at org.h2.util.NetUtils.createServerSocket(NetUtils.java:146)
at org.h2.server.TcpServer.start(TcpServer.java:245)
at org.h2.tools.Server.start(Server.java:511)
我希望有一个 .properties 文件设置或命令行选项可以更改要使用的 Web 控制台端口号 H2。
【问题讨论】:
-
看起来是硬编码的:github.com/liquibase/liquibase/blob/master/liquibase-core/src/… 不过应该足够简单来编辑示例。
-
@RobbyCornelissen ...谢谢你,我正要开始寻找示例源代码。我希望我可以独立于
liquibase.jar运行H2,或者至少在类路径上使用liquibase.jar。至少在我重建某些东西之前。 -
只需要复制粘贴编辑该单个示例类。这是一个示例,它不是库的一部分。