Skip to content

postgres connection not working #3815

@korncola

Description

@korncola

Expected Behavior

  1. better documentation of temporal-server.yaml
  2. clear error why connection to postgres is not working
  3. postgres connection working

Actual Behavior

  1. not clear what i have to configure to make postgres work, no example, just a terse autogenerated reference
  2. no clear error, just:
[Fx] Error returned: received non-nil error from function "go.temporal.io/server/temporal".ServerOptionsProvider
	/home/runner/work/temporal/temporal/temporal/fx.go:159:
sql schema version compatibility check failed: unable to read DB schema version keyspace/database: temporal error: no usable database connection found

Steps to Reproduce the Problem

  • temporal standalone binaries deployed to Amazon Linux 2023
  • database set up with temporal-sql-tool according to docu
  • even tried root credentials of database
  • triple checked db params
  • verified with
temporal_visibility=> SELECT * FrOM schema_version;
 version_partition |       db_name       |       creation_time        | curr_version | min_compatible_version 
-------------------+---------------------+----------------------------+--------------+------------------------
                 0 | temporal_visibility | 2025-08-19 14:36:05.240912 | 1.9          | 0.1
(1 row)

temporal_visibility=> \c temporal
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off, ALPN: postgresql)
You are now connected to database "temporal" as user "root".
temporal=> SELECT * FrOM schema_version;
 version_partition | db_name  |       creation_time       | curr_version | min_compatible_version 
-------------------+----------+---------------------------+--------------+------------------------
                 0 | temporal | 2025-08-19 14:35:16.29214 | 1.17         | 1.0
  • temporal-server.yaml
log:
  stdout: true
  level: debug

persistence:
  defaultStore: default
  visibilityStore: default-visibility
  numHistoryShards: 4
  datastores:
    default:
      sql:
        pluginName: "postgres12"
        databaseName: "temporal"
        connectAddr: "temporal-db.example.com:5432"
        connectProtocol: "tcp"
        user: "temporal"
        password: "redacted"
        connectAttributes:
          cache: "private"
          setup: true
        tls:
          enabled: true
          enableHostVerification: false

    default-visibility:
      sql:
        pluginName: "postgres12"
        databaseName: "temporal_visibility"
        connectAddr: "temporal-db.example.com:5432"
        connectProtocol: "tcp"
        user: "temporal"
        password: "redacted"
        connectAttributes:
          cache: "private"
          setup: true
        tls:
          enabled: true
          enableHostVerification: false

global:
  membership:
    maxJoinDuration: 30s
    broadcastAddress: "127.0.0.1"
  pprof:
    port: 7936

services:
  frontend:
    rpc:
      grpcPort: 7233
      membershipPort: 6933
      bindOnIP: '0.0.0.0'
      httpPort: 7243

  matching:
    rpc:
      grpcPort: 7235
      membershipPort: 6935
      bindOnLocalHost: true

  history:
    rpc:
      grpcPort: 7234
      membershipPort: 6934
      bindOnLocalHost: true

  worker:
    rpc:
      membershipPort: 6939

clusterMetadata:
  enableGlobalNamespace: false
  failoverVersionIncrement: 10
  masterClusterName: "active"
  currentClusterName: "active"
  clusterInformation:
    active:
      enabled: true
      initialFailoverVersion: 1
      rpcName: "frontend"
      rpcAddress: "localhost:7233"
      httpAddress: "localhost:7243"

dcRedirectionPolicy:
  policy: "noop"

Specifications

  • Version: 1.28.1
  • Platform: Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions