skip to Main Content

When connecting to postgres via psql I connect via:

psql 'postgresql://[email protected]:5432,pg-clienthttpfile-dev3.dev-dc2-c1.gb.app:5432/clienthttpfile?connect_timeout=5&target_session_attrs=read-write'

I’m trying to connect my app via the JDBC driver and the connection string above does not work:

I tried with double and single quotes

database.url="jdbc:postgresql://[email protected]:5432,pg-clienthttpfile-dev3.dev-dc2-c1.gb.app:5432/clienthttpfile?connect_timeout=5&target_session_attrs=read-write"
database.url='jdbc:postgresql://[email protected]:5432,pg-clienthttpfile-dev3.dev-dc2-c1.gb.app:5432/clienthttpfile?connect_timeout=5&target_session_attrs=read-write'

Both throw:

Driver org.postgresql.Driver claims to not accept jdbcUrl, <some db url>

If I use no quotes the connection just times out. Any idea what’s wrong?

2

Answers


  1. Chosen as BEST ANSWER

    Thanks for this

    We do need target_session_attrs=read-write because the other cluster is a Read Only standby cluster that does have a primary.


  2. It fails because the URL is wrong. As documented in the PostgreSQL JDBC driver documentation under Connection Fail-over:

    The syntax for the connection url is: jdbc:postgresql://host1:port1,host2:port2/database

    In other words, you need to use

    jdbc:postgresql://pg-clienthttpfile-dev3.dev-dc1-c1.gb.app:5432,pg-clienthttpfile-dev3.dev-dc2-c1.gb.app:5432/clienthttpfile?connectTimeout=5&targetServerType=primary

    That is:

    • Remove the clienthttpfile@

      As life888888 pointed out in the comments, you can replace it by adding &user=clienthttpfile to the URL, but I assume the user is actually specified separately (e.g. through a property database.user in your configuration file).

    • Replace connect_timeout with connectTimeout

    • Replace target_session_attrs=read-write with targetServerType=primary

    Don’t just assume that a connection URL for one tool maps one-to-one for another tool or library, check their documentation.

    I would also guess that you should not add quotes (whether single or double quotes) around the URL, but that depends on the actual configuration file format. Assuming it is a properties file, it should not be enclosed in quotes.

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search