我正在测试一个创建简单 base36 PostgreSQL 扩展的示例。
但是,我在编写和使用单元测试用例 ( REGRESS =
) 时遇到了问题。如果我使用sudo make installcheck
,会有一个错误说
... ============== 删除数据库“contrib_regression” ==============
psql:致命:角色“root”不存在......
似乎 PostgreSQL 正在尝试使用当前登录用户来执行测试,在这种情况下不存在。如果我省略sudo
and 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)