4

我正在测试一个创建简单 base36 PostgreSQL 扩展的示例。

但是,我在编写和使用单元测试用例 ( REGRESS =) 时遇到了问题。如果我使用sudo make installcheck,会有一个错误说

... ============== 删除数据库“contrib_regression” ==============

psql:致命:角色“root”不存在......

似乎 PostgreSQL 正在尝试使用当前登录用户来执行测试,在这种情况下不存在。如果我省略sudoand just do make installcheck,它会产生一个不同的错误,说明permission denied某事

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 '默认';” “contrib_regression”/usr/lib/postgresql/9.5/lib/pgxs/src/makefiles/pgxs.mk:272:目标“installcheck”的配方失败 make:*** [installcheck] 错误 2

我的问题是:

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

或者,我可以解决问题,以便非超级用户可以执行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)
4

1 回答 1

3

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

PGUSER=foo make installcheck

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

于 2016-06-06T18:44:53.733 回答