macos - Embedded Postgres 在 Mac OS 上无法获取进程 PID
问题描述
我使用嵌入式 PostgreSQL和 Java 11 进行集成测试。在 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
,第一次尝试通过 pid 获取失败unixLikeProcessId()
。
请任何人提示一下为什么会发生这种情况或如何解决?
解决方案
日志显示以下内容:
Possibly failed to run initdb:
initdb: invalid locale name "en-US"
所以initdb
失败的,PostgeSQL实例没有启动,也没有创建postmaster.pid
文件,都导致了上面的错误。
问题出在通过additionalInitDbParams=[--locale=en-US, -EUTF8]
.
推荐阅读
- doctrine-orm - 新迁移中的冗余变化
- android - Context.startForegroundService() 没有在三星设备上调用 Service.startForeground()
- php - 如何在 Symfony 4 上添加新页面而不会出现任何 404 错误?
- python - 需要帮助来优化代码,不能决定使用数据框进行排序还是使用 mysql
- amazon-web-services - Ansible 部署到堡垒后面的 Windows 主机
- c# - 如何修复更新按钮即使被点击也不起作用
- input - 如何将数据分配给内部输入端口
- azure - Azure 云服务的未来
- mysql - R 和 RMySQL 无法将表写入 MySQL 数据库
- algorithm - 如何在两点之间绘制直线并避开障碍物?