gpt4 book ai didi

postgresql - 如何在 postgres 扩展的 Makefile 中为 installcheck 设置用户?

转载 作者:行者123 更新时间:2023-11-29 12:18:54 32 4
gpt4 key购买 nike

我正在测试 creating a simple base36 PostgreSQL extensions 的示例.

但是,我在编写和使用单元测试用例 (REGRESS =) 时遇到了问题。如果我使用 sudo make installcheck,将会出现错误提示

... ============== dropping database "contrib_regression" ==============

psql: FATAL: role "root" does not exist ... ...

似乎 PostgreSQL 试图使用当前登录用户来执行测试,在这种情况下不存在。如果我省略 sudo 而只是执行 make installcheck,它将生成一个不同的错误,提示 permission denied for something

CREATE DATABASE ERROR: permission denied to set parameter "lc_messages" command failed: "/usr/lib/postgresql/9.5/bin/psql" -X -c "ALTER DATABASE \"contrib_regression\" SET lc_messages TO 'C';ALTER DATABASE \"contrib_regression\" SET lc_monetary TO 'C';ALTER DATABASE \"contrib_regression\" SET lc_numeric TO 'C';ALTER DATABASE \"contrib_regression\" SET lc_time TO 'C';ALTER DATABASE \"contrib_regression\" SET timezone_abbreviations TO 'Default';" "contrib_regression" /usr/lib/postgresql/9.5/lib/pgxs/src/makefiles/pgxs.mk:272: recipe for target 'installcheck' failed make: *** [installcheck] Error 2

我的问题是:

我可以在 Makefile 中为 PostgreSQL 扩展指定不同的用户(例如 super 用户)吗?

或者,我能否解决问题以便非 super 用户可以执行installcheck

注意:Makefile 是:

EXTENSION = base36        # the extensions name
DATA = base36--0.0.1.sql # script files to install
REGRESS = base36_test # our test script file (without extension)

# postgres build stuff
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)

最佳答案

您可以设置环境变量PGUSER,例如

PGUSER=foo make installcheck

以 root 身份(通过 sudo)运行 make installcheck 很可能是错误的做法。

关于postgresql - 如何在 postgres 扩展的 Makefile 中为 installcheck 设置用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37661605/

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