嵌入式 Postgres 无法在 Mac OS 上获取进程 PID



我正在使用带有Java 11的嵌入式PostgreSQL进行集成测试。在Windows上它运行良好,但在Mac上它首先下载Mac OS二进制文件(这是预期的(:

Extract /Users/fubar/.embedpostgresql/postgresql-11.1-1-osx-binaries.zip START

但随后它失败并出现以下堆栈跟踪:

java.lang.NoSuchFieldException: handle
at java.base/java.lang.Class.getDeclaredField(Class.java:2411)
at de.flapdoodle.embed.process.runtime.Processes.windowsProcessId(Processes.java:109)
at de.flapdoodle.embed.process.runtime.Processes.access$200(Processes.java:51)
at de.flapdoodle.embed.process.runtime.Processes$PidHelper$2.getPid(Processes.java:209)

当我查看源代码时Processes我看到它在内部使用 PidHelper.LEGACY ,这在第一次尝试通过 unixLikeProcessId() 获取 pid 时失败。

任何人都可以提示为什么会发生这种情况或如何解决这个问题吗?

日志

显示以下内容:

Possibly failed to run initdb:
initdb: invalid locale name "en-US"

所以initdb失败了,PostgeSQL实例没有启动,也没有创建一个postmaster.pid文件,这都导致了上面的错误。

问题出在通过 additionalInitDbParams=[--locale=en-US, -EUTF8] 配置的区域设置中。

最新更新