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

标签 postgresql makefile regression-testing postgresql-extensions

我正在测试 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/

相关文章:

c++ - 如何使用交叉链接器而不是 native 链接器

makefile - make - 模式规则目标被错误地视为中间对象

makefile - 在 Makefile 配方中使用 eval 设置变量

testing - 软件测试术语

testing - 有哪些工具可用于对网站进行质量检查?这被视为单元测试

PostgreSQL `analyse` 与 `analyze`

postgresql - 如何在登录尝试失败次数过多后重新启用 Azure Postgresql 数据库用户

python - 使用 Docker 创建缓慢的 django 模型实例

automated-tests - 如何使用特定分组(烟雾、回归等)运行 TestCafe 工具脚本? cmd 的正确语法是什么?

postgresql - 在 PostgreSQL 9.2.8 中调度存储过程