Windows上的pg_upgrade无法写入日志文件pg_upgrade_internal.log

问题描述 投票:6回答:2

我正在尝试在Windows 2008R2上运行pg_upgrade,但出现错误:

无法写入日志文件pg_upgrade_internal.log失败,正在退出

[我在23216734处看到了一个类似的Linux问题,它说明问题与权限有关,但对Windows没有帮助,因为我没有名为postgres的用户

pg_upgrade docs也一样,其中提到了postgres用户:

RUNAS / USER:postgres“ CMD.EXE”

但是同样,我没有这样的用户,并且试图以管理员身份运行此命令,所以我不明白为什么我没有权限。我什至尝试做

RUNAS /USER:Administrator "CMD.EXE"

并在新的命令提示符下运行pg_upgrade,但出现相同的错误。

而且,我不确定哪个目录需要权限?试图将pg_upgrade_internal.log写入的进程在哪里?


更多详细信息:

我正在运行的命令是:

C:\Apps\postgresql\pgsql-9.5.0\bin>pg_upgrade.exe --old-datadir=E:\PGSQL_data --new-datadir=E:\PGSQLData\pgsql-9.5 --old-bindir=C:\Apps\postgresql\pgsql-9.4.5.3\bin --new-bindir=C:\Apps\postgresql\pgsql-9.5.0\bin

在出现错误的同一命令提示符下,我运行了以下命令,它们全部起作用,在相应目录中创建了一个空文件,因此允许对传递给pg_upgrade的目录进行写许可:

C:\Apps\postgresql\pgsql-9.5.0\bin>type nul > E:\PGSQL_data\_test_write_permission.txt
C:\Apps\postgresql\pgsql-9.5.0\bin>type nul > E:\PGSQLData\pgsql-9.5\_test_write_permission.txt
C:\Apps\postgresql\pgsql-9.5.0\bin>type nul > C:\Apps\postgresql\pgsql-9.4.5.3\bin\_test_write_permission.txt
C:\Apps\postgresql\pgsql-9.5.0\bin>type nul > C:\Apps\postgresql\pgsql-9.5.0\bin\_test_write_permission.txt

所以现在我比以前更加困惑...


甚至更多细节:

我看到用于创建内部日志文件的命令位于/src/bin/pg_upgrade/option.c#L101

哪个呼叫fopen_priv(INTERNAL_LOG_FILE, "a")定义为/src/bin/pg_upgrade/file.c#L243

但是我不确定它要写入哪个目录。如果我知道,那么我可以检查该目录上的权限。

有什么想法吗?

windows postgresql windows-server-2008-r2 pg-upgrade
2个回答
17
投票
所以/src/bin/pg_upgrade/file.c#L243 /* fopen() file with no group/other permissions */的源代码注释给了我一个主意。

我在C:\ temp创建了一个临时文件夹,并授予

所有人 的权限,然后从该目录(即,)运行pg_upgrade。C:\temp>C:\Apps\postgresql\pgsql-9.5.0\bin\pg_upgrade.exe --old-datadir=E:\PGSQL_data --new-datadir=E:\PGSQLData\pgsql-9.5 --old-bindir=C:\Apps\postgresql\pgsql-9.4.5.3\bin --new-bindir=C:\Apps\postgresql\pgsql-9.5.0\bin

而在我试图从工作目录%PGSQL%\bin运行pg_upgrade之前,该目录没有对所有人的写许可权。

现在我不再收到cannot write to log file pg_upgrade_internal.log错误。

docs实际上是说pg_upgrade requires write permission in the current directory.


0
投票
我能够通过以管理员身份运行命令提示符来解决此问题。
© www.soinside.com 2019 - 2024. All rights reserved.