我实际上遇到了一个问题。我已经在生产服务器上安装了pgbouncer,在该服务器上也有一个Odoo实例和postgresql。
也许:
在我的日志中,我有这个:
2018-09-10 16:39:16.389 10123 WARNING C-0x1eb5478:
(nodb)/(nouser)@unix(18272):6432 pooler error: no such database: postgres
2018-09-10 16:39:16.389 10123 LOG C-0x1eb5478: (nodb)/(nouser)@unix(18272):6432 login failed: db=postgres user=oerppreprod
这是pgbouncer的实际配置:
pgbouncer_archive = host=127.0.0.1 port=5432 dbname=archive
admin_users = postgres
ignore_startup_parameters = extra_float_digits
同样,默认配置(我仅添加/编辑了此配置)。
他为什么要尝试连接postgres
数据库?
当我返回上一个conf(没有PGBouncer,只是从端口6432交换到5432)时,一切都正常了。...
有什么主意吗?
谢谢!
答案 0 :(得分:0)
在我的情况下,我遇到了同样的问题。也许对某人有用:
我已经通过几个步骤解决了这个问题:
在每个请求的开始时-您的Framework或PDO(或其他)运行初始查询以检查您要查询的数据库是否存在于要处理的请求的postgres数据中。
我已替换了pgbouncer.ini文件的数据库部分中的“ user = project_user password = mytestpassword ”行的一部分。根据我的测试,如果您替换了这部分-pgbouncer将使用您的userlist.txt文件(或您选择的身份验证),在我的情况下,它将是userlist.txt。
添加了行“ postgres = host = 127.0.0.1 port = 5432 dbname = postgres ”
[数据库]
postgres = host = 127.0.0.1 port = 5432 dbname = postgres
my_database =主机= 127.0.0.1端口= 5432 dbname = my_database
我的userlist.txt文件如下所示(我正在使用auth_type = md5,所以我的密码在md5中):
“ my_user”“ md5passwordandsoelse”
我已将管理员用户添加到pgbouncer.ini文件中:
admin_users = postgres,我的用户
在进行所有操作之后,我建议您通过以下简单查询来检查您正在从哪个用户运行查询:
select current_user;
最后,通过此查询,您必须接收选择的用户名(在我的情况下为-my_user) ps。我还必须提到,我使用的是127.0.0.1-因为我的pgbouncer与postgres安装在同一服务器上。