繁体   English   中英

PostreSQL 10 无法在 Windows 子系统 Linux 上运行的 Ubuntu 18.04 上启动

[英]PostreSQL 10 fails to start on Ubuntu 18.04 running on Windows Subsystem for Linux

我最近使用适用于 Linux 的 Windows 子系统 (WSL) 在 Windows 10 上全新安装了 Ubuntu 18.04。 然后我安装了 PostgreSQL 10 并且能够成功启动数据库服务器。 然后我通过 PGAdmin 4.4 登录到服务器并安装了 PostGIS 2.5.2 扩展。 我正准备通过 pg_restore 导入数据时,PGAdmin 说它已经失去了与 PostgreSQL 服务器的连接。 我尝试重新启动,但我的日志中出现以下错误:

2019-04-04 15:46:12.561 DST [47] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2019-04-04 15:46:12.561 DST [47] LOG:  listening on IPv6 address "::", port 5432
2019-04-04 15:46:12.563 DST [47] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2019-04-04 15:46:12.614 DST [48] LOG:  database system was shut down at 2019-04-04 15:42:36 DST
2019-04-04 15:46:12.661 DST [47] LOG:  database system is ready to accept connections
2019-04-04 15:46:13.247 DST [55] [unknown]@[unknown] LOG:  incomplete startup packet
2019-04-04 15:46:53.541 DST [49] PANIC:  could not flush dirty data: Function not implemented
2019-04-04 15:46:53.543 DST [47] LOG:  checkpointer process (PID 49) was terminated by signal 6: Aborted
2019-04-04 15:46:53.543 DST [47] LOG:  terminating any other active server processes
2019-04-04 15:46:53.543 DST [68] postgres@postgres WARNING:  terminating connection because of crash of another server process
2019-04-04 15:46:53.543 DST [68] postgres@postgres DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
2019-04-04 15:46:53.543 DST [68] postgres@postgres HINT:  In a moment you should be able to reconnect to the database and repeat your command.
2019-04-04 15:46:53.543 DST [52] WARNING:  terminating connection because of crash of another server process
2019-04-04 15:46:53.543 DST [52] DETAIL:  The postmaster has commanded this server process to roll back the current transaction and exit, because another server process exited abnormally and possibly corrupted shared memory.
2019-04-04 15:46:53.543 DST [52] HINT:  In a moment you should be able to reconnect to the database and repeat your command.
2019-04-04 15:46:53.549 DST [47] LOG:  all server processes terminated; reinitializing
2019-04-04 15:46:53.569 DST [69] LOG:  database system was interrupted; last known up at 2019-04-04 15:46:12 DST
2019-04-04 15:46:53.569 DST [69] PANIC:  could not flush dirty data: Function not implemented
2019-04-04 15:46:53.575 DST [47] LOG:  startup process (PID 69) was terminated by signal 6: Aborted
2019-04-04 15:46:53.575 DST [47] LOG:  aborting startup due to startup process failure
2019-04-04 15:46:53.579 DST [47] LOG:  database system is shut down
2019-04-04 15:46:53.579 DST [70] postgres@postgres FATAL:  the database system is in recovery mode

我尝试全新安装 Ubuntu 18.04 和 PostgreSQL 10,同样的事情再次发生! 我之前安装了上述设置,效果很好。 有没有人对可能导致此问题的原因有任何建议?

更新: A 回答了下面的问题。

所以经过一些进一步的研究,我发现在最新的 PostgreSQL 更新中,之前的“无法刷新脏数据”警告升级为恐慌,我通过保留 fsync=on 解决了这个问题,并将 data_sync_retry = true 添加到 postgresql.conf。 我希望这对遇到同样问题的其他人有用。 看起来这个问题是已知的,将来会得到修复,请参见https://github.com/Microsoft/WSL/issues/645

看起来 WSL 不支持 PostgreSQL 所需的所有系统调用。 您是否尝试过安装 Windows 版本? 你可以在这里获得它:

https://www.postgresql.org/download/windows/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM