gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 13:28:01 28 4
gpt4 key购买 nike

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

cannot write to log file pg_upgrade_internal.log Failure, exiting

我在 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

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

有什么想法吗?

最佳答案

所以源码注释在/src/bin/pg_upgrade/file.c#L243 /* fopen() file with no group/other permissions */ 给了我一个想法。

我在 C:\temp 中创建了一个临时文件夹,并向 Everyone 授予了Write 权限,然后从该目录运行 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 需要当前目录的写权限。

关于windows - Windows 上的 pg_upgrade 无法写入日志文件 pg_upgrade_internal.log,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34664236/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com