我有一个 pgBouncer 作为连接池的 PostgreSQL 服务器。
我的应用程序正在 Elixir 上运行。
这是我的 pgBouncer 配置文件:
* = host=X.X.X.X port=5432
logfile = /var/log/postgresql/pgbouncer.log
pidfile = /var/run/postgresql/pgbouncer.pid
listen_addr = 0.0.0.0
listen_port = 6432
unix_socket_dir = /var/run/postgresql
auth_type = trust
auth_file = /etc/pgbouncer/userlist.txt
admin_users = admin
pool_mode = transaction
ignore_startup_parameters = extra_float_digits
server_check_query = select 1
server_check_delay = 30
max_client_conn = 10000
default_pool_size = 5
min_pool_size = 3
reserve_pool_size = 3
server_reset_query = DEALLOCATE ALL;
当我使用事务池时,出现此错误:
ERROR 08P01 (protocol_violation) bind message supplies 4 parameters, but prepared statement "ecto_323" requires 2
然后我将其更改为会话池模式。这次我收到了这个错误:
ERROR 26000 (invalid_sql_statement_name) prepared statement "ecto_83" does not exist
如何从 pgBouncer 解决这个问题?
当我直接连接数据库时,我没有看到任何错误。它在没有任何代理的情况下运行了一年多。我们现在正在实施 pgBouncer。