relation pg_replication_slots does not exist
This error occurs when trying to query the `pg_replication_slots` system view in PostgreSQL, but it doesn’t exist in your version or you don’t have sufficient privileges. Here are the most common causes and solutions:
## 1. **PostgreSQL Version Too Old**
The `pg_replication_slots` view was introduced in **PostgreSQL 9.4**. If you’re using an older version, this view won’t exist.
**Check your PostgreSQL version:**
“`sql
SELECT version();
“`
**Solutions:**
– Upgrade to PostgreSQL 9.4 or newer
– On older versions, use alternative methods to check replication
## 2. **Insufficient Privileges**
You need superuser privileges or specific permissions to access this view.
**Check your privileges:**
“`sql
SELECT current_user;
“`
**Solutions:**
– Connect as a superuser (usually `postgres`):
“`bash
psql -U postgres -d your_database
“`
– Grant privileges to your user:
“`sql
GRANT SELECT ON pg_replication_slots TO your_username;
“`
## 3. **Wrong Database Connection**

The `pg_replication_slots` view exists in all databases, but you might be connected to a template database.
**Solutions:**
– Connect to a regular database:
“`bash
psql -U your_user -d your_database
“`
## 4. **Alternative Queries for Older Versions**
**For PostgreSQL 9.3 and earlier:**
“`sql
— Check if replication is enabled
SELECT name, setting FROM pg_settings WHERE name LIKE ‘%replication%’;
— Check for replication connections
SELECT * FROM pg_stat_replication;
“`
**For any version, check if replication slots feature exists:**
“`sql
SELECT EXISTS (
SELECT 1 FROM pg_class
WHERE relname = ‘pg_replication_slots’
);
“`
## 5. **Enable Replication (if needed)**
If you need replication slots and they’re not enabled:
**In `postgresql.conf`:**
“`ini
wal_level = replica
max_replication_slots = 10 # or higher
“`
**Restart PostgreSQL after making changes:**
“`bash
sudo systemctl restart postgresql
“`
## 6. **Quick Diagnostic Commands**
“`sql
— Check if view exists
SELECT schemaname, tablename
FROM pg_tables
WHERE tablename = ‘pg_replication_slots’;
— Check all system views starting with ‘pg_replication’
SELECT schemaname, viewname
FROM pg_views
WHERE viewname LIKE ‘pg_replication%’;
“`
## Most Likely Solution
If you’re getting this error, you’re probably either:
1. Using PostgreSQL < 9.4 (upgrade required)
2. Not connected as a superuser (use `psql -U postgres`)
What PostgreSQL version are you using, and what user are you connecting as?