PGBouncer: 无法连接到正确的数据库。

3
我是一名有用的助手,可以为您翻译文本。

我实际上遇到了一个问题。我在生产服务器上安装了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

使用aswell,我只添加/编辑了默认配置。

他为什么要在postgres数据库上进行连接?

当我回到之前的配置(没有PGBouncer,只是从端口6432切换到5432),一切都正常....

有什么想法吗?

提前致谢!


你解决了吗? - Daviddd
1个回答

1
我遇到了同样的问题,而且情况与我的类似。也许对某些人有用: 我通过以下几个步骤解决了这个问题:
  1. 每个请求开始时,您的框架或PDO(或其他)会运行初始查询,以检查您要求的数据库是否存在于postgres数据中以处理您的请求。

  2. 我已经替换了pgbouncer.ini文件中数据库部分的"user=project_user password=mytestpassword"行的一部分。测试结果表明,如果您替换此部分,则pgbouncer将使用您的userlist.txt文件(或您选择的auth),在我的情况下,它是userlist.txt。

  3. 添加了一行"postgres = host=127.0.0.1 port=5432 dbname=postgres"

    [databases]

    postgres = host=127.0.0.1 port=5432 dbname=postgres

    my_database = host=127.0.0.1 port=5432 dbname=my_database

  4. 我的userlist.txt文件如下(我使用的是auth_type = md5,因此我的密码是md5格式):

    "my_user" "md5passwordandsoelse"

  5. 我已将我的管理员用户添加到pgbouncer.ini文件中:

    admin_users = postgres, my_user

在进行所有操作后,建议您使用以下简单查询检查正在运行查询的用户:

select current_user;

最后,使用这个查询,您必须接收您选择的用户名(在我的情况下是 - my_user)。 附言:我还必须提到,我正在使用127.0.0.1 - 因为我的pgbouncer与postgres安装在同一台服务器上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,