如何设置postgres连接的application_name?

问题描述 投票:0回答:6

我正在使用tomcat连接池

org.apache.tomcat.jdbc.pool.DataSource
。连接出现在我的数据库中
pg_stat_activity
application_name
为空。

我如何在我的java应用程序中设置该应用程序名称,以便我知道每个连接来自哪里(因为将有多个应用程序访问同一个数据库)?

java postgresql connection-pooling tomcat-jdbc
6个回答
40
投票

您可以在连接字符串中指定应用程序名称。
文档[此处][1]。

示例:

jdbc:postgresql://localhost:5435/DBNAME?ApplicationName=MyApp

小心:参数名称区分大小写。 [1]:https://jdbc.postgresql.org/documentation/use/


27
投票

使用设置命令:

set application_name to my_application;

8
投票

对于那些使用普通连接字符串而不是 jdbc 的人:

postgresql://other@localhost/otherdb?application_name=myapp

7
投票

您可以将其添加到您在连接池定义中使用的 JDBC URL:

jdbc:postgresql://localhost/postgres?ApplicationName=my_app

如果您想动态更改它,例如要反映应用程序内部的不同模块,您可以使用

SET
命令,如 klin 所示。


4
投票

如果您使用的是 Python 库

psycopg2
,请按照以下步骤操作

import psycopg2    
psycopg2.connect(host=host_ip, database=db_name, user=user, password=db_pwd, application_name="Python Local Test Script")

3
投票

如果您想以编程方式设置,PostgreSQL 驱动程序还有一个可以调用的方法:

PGPoolingDataSource ds = new PGPoolingDataSource();
ds.setApplicationName(applicationName);
© www.soinside.com 2019 - 2024. All rights reserved.