与vagrant一​​起使用时无法启动postgresql

试图启动由Vagrantpipe理的Virtualbox虚拟机上的postgresql我有以下错误:

LOG: could not link file "pg_xlog/xlogtemp.29" to "pg_xlog/000000010000000000000001" (initialization of log file): Operation not permitted FATAL: could not open file "pg_xlog/000000010000000000000001": No such file or directory 

“`

当postgresql的数据目录位于Vagrant共享文件夹(例如/vagrant ),而Vagrant主机是Windows时会发生这种情况。 在这种情况下,权限不能设置为unix方式。

将该文件夹移到另一个位置(例如vagrant用户的home目录),postgresql将启动。

解决scheme可在https://gitlab.com/gitlab-org/gitlab-development-kit/issues/20find

其根本原因是vboxsf不支持文件系统链接(既不硬也不符号)。 您可以通过在VirtualBox guest虚拟机中装入主机文件夹来重现此问题,并尝试执行以下操作: ln /path/to/mounted/share/existingfile.txt /some/path/link-to-file.txt

例如(将/ var / data挂载为vboxsf共享) jim@a55a005fc5a5:/~ ln /var/data/foo.txt ~/data/link-to-foo ln: failed to create hard link '/users/jim/data/link-to-foo' => '/var/data/foo.txt': Operation not permitted

在virtualbox.org( #818 , #10085 )有很多这样的门票,但是看到他们回溯7年,可能还有一段时间还没有修好!