Error
Error Summary
- The publication key does not exist or is not valid for the specified PostgreSQL database.
Potential Causes
-
The publication key was deleted or renamed after it was created.
-
The publication key exists in a database other than the one specified in the Source configuration.
-
The publication key is incorrect or has a case mismatch.
-
The publication key was created by another user and is not visible to the one specified in the Source configuration.
-
The publication key exists, but the database user does not have access to the publication tables.
-
The PostgreSQL server runs an incompatible version or logical replication may not be enabled.
Suggested Action(s)
-
Ensure that the PostgreSQL server version is 10 or higher, up to 17. You can run the
SHOW server_versioncommand in an SQL client to check the version of your PostgreSQL database.Note: Publications are supported only in versions 10 and above.
-
Confirm that logical replication is enabled for your PostgreSQL database by running the
SHOW wal_levelcommand for your database. If the value is not logical, refer to section, Set up Logical Replication for Incremental Data in your Source documentation for the steps. -
Verify that the publication key exists in the specified database. To do this:
-
Connect to the database with the user configured in the Source using an SQL client, such as psql.
-
Run the following command to check if the publication exists:
SELECT * FROM pg_publication WHERE pubname = '<your_publication_key';Note: Replace the placeholder value in the command with your own. For example, <your_publication_key> with hevo_publication.
If the query does not return a result, create a publication with the same name as the missing key. Refer to section, Create a publication for your database tables, in your Source documentation for the steps.
-
-
Confirm that the publication key in the Source configuration matches the name exactly, including case sensitivity.
-
Ensure that the database user has permission to list publications and access the publication tables. To do this:
Note: Replace the placeholder value in the commands below with your own. For example, <your_publication_key> with hevo_publication.
-
Connect to the database with the user configured in the Source using an SQL client, such as psql.
-
Run the following commands to check if the user has permission to list publications and access the publication tables:
SELECT pubname, puballtables, pubowner FROM pg_publication WHERE pubname = '<your_publication_key>';If the query returns rows, the user can list publications. If it does not, refer to section, Grant privileges to the user, to grant the required permissions.
Note: The
puballtablesfield is set to true if the publication is created for all tables. For such publications, the query below may return no rows. -
Run the following command to verify that the user can access the publication tables:
SELECT p.pubname, c.relname FROM pg_publication p JOIN pg_publication_rel r ON p.oid = r.prpubid JOIN pg_class c ON r.prrelid = c.oid WHERE p.pubname = '<your_publication_key>';Note: The query may return no rows if the publication is created for all tables in the database.
-