Scala Playframework Slick如何传递PostgreSQL参数?
我来帮你搞定这个问题!要在Slick的配置里传递PostgreSQL的idle_in_transaction_session_timeout参数,有两种可靠的方式,你可以根据自己的偏好选择:
方法1:直接追加到JDBC URL中
PostgreSQL的JDBC驱动支持在URL后面通过查询参数的方式传递配置项,你只需要在原URL末尾加上?idle_in_transaction_session_timeout=XXX(如果已经有其他参数,就用&连接)。注意这个参数的单位是毫秒,比如设置30秒超时就是30000。
修改后的配置示例:
slick.dbs.default.profile="slick.jdbc.PostgresProfile$" slick.dbs.default.db.driver="org.postgresql.Driver" slick.dbs.default.db.url="jdbc:postgresql://localhost:5432/your_db?idle_in_transaction_session_timeout=30000" slick.dbs.default.db.user="your_user" slick.dbs.default.db.password="your_password"
方法2:通过Slick的
db.properties配置 如果你希望参数配置更清晰,也可以用Slick提供的properties节点单独配置每个JDBC参数,这样管理多个参数时更方便:
修改后的配置示例:
slick.dbs.default.profile="slick.jdbc.PostgresProfile$" slick.dbs.default.db.driver="org.postgresql.Driver" slick.dbs.default.db.url="jdbc:postgresql://localhost:5432/your_db" slick.dbs.default.db.user="your_user" slick.dbs.default.db.password="your_password" # 添加这一行来配置超时 slick.dbs.default.db.properties.idle_in_transaction_session_timeout=30000
注意事项
- 这个参数仅支持PostgreSQL 9.6及以上版本,如果你的PostgreSQL版本低于9.6,需要先升级版本才能使用。
- 确认你使用的
org.postgresql.Driver版本是较新的(至少42.0.0以上),旧版本可能对这个参数的支持有问题。
之前你的尝试无效,大概率是因为没有把参数放在正确的位置——要么没追加到URL的查询参数里,要么用了错误的配置键,试试上面两种方法应该就能解决了。
内容的提问来源于stack exchange,提问作者Ikrom
相关产品推荐
相关产品推荐

