Skip to content

DBeaver "Column is read-only: No corresponding table column" Error

Problem Statement

When attempting to edit data directly in DBeaver's result grid, users encounter the frustrating error:

Column "[column name]" is read-only: No corresponding table column.

Despite traditional UPDATE SQL statements working correctly, the grid-based editing feature becomes unusable. This problem typically appears suddenly without changes to user permissions or database structure, suggesting client-side metadata or configuration issues within DBeaver.

Why This Happens

DBeaver's grid editor relies on accurate schema metadata to enable direct cell editing. When DBeaver's internal catalog becomes outdated, incorrectly cached, or misconfigured, it fails to map result columns to physical table columns—triggering the read-only error.

Step-by-Step Solutions

1. Refresh Metadata or Reconnect

The most common fix involves updating DBeaver's internal metadata:

Refresh Tables/Columns

  1. In the Database Navigator (left panel)
  2. Right-click your table → Refresh
    If table-level refresh fails, refresh specific columns
  3. Expand table → Right-click ColumnsRefresh

Refresh Table in Database Navigator

Reconnect Your Session

Disconnect and reconnect to force metadata reload:

  1. Right-click your database connection
  2. Select Disconnect
  3. Right-click again → Reconnect

🔁 This method resolved the issue for 101 users

2. Verify Critical Editor Settings

Improper metadata settings block column detection:

  1. Navigate to:
    PreferencesEditorsData EditorMetadata
  2. Enable:
    • Read table metadata (unique keys)
    • Read table references (foreign keys)
  3. Restart DBeaver after changes

⚠️ Note: Enabling these options may slow large table loads but is required for editing.

Metadata settings window

3. Unlock the Data Grid

🔒 Check for an accidental lock toggle:

  1. In the SQL Editor window
  2. Locate the lock icon in the toolbar
  3. Ensure it's blue (unlocked), not yellow (locked)

Lock icon location

4. Fix SQL Query Structure

Syntax nuances can confuse DBeaver's parser:

Separate Comments Properly

Insert an empty line between a comment and SELECT:

sql
# This causes issues in some versions  
-- Insert blank line below:  

SELECT * FROM your_table;  -- Valid with space above

Avoid Mixed Case in Calculated Columns

Aliases in uppercase may trigger issues:

sql
-- Problematic:
SELECT COUNT(*) AS "TOTAL_ROWS" FROM orders;  

-- Solution:
SELECT COUNT(*) AS total_rows FROM orders;  -- Lowercase alias

Explicitly List Columns

Avoid rowid alongside explicit columns:

sql
-- ❌ May cause conflict:
SELECT rowid, product, price FROM items;  

-- ✅ Use ONE approach:
SELECT * FROM items;                      -- Wildcard
-- OR  
SELECT product, price FROM items;         -- Explicit columns

5. Use Fully Qualified Names

Specify database/schema context for ambiguous tables:

sql
-- Before (problematic):
SELECT * FROM products;  

-- After (fixed):
SELECT * FROM inventory.public.products;  
-- Format: [database].[schema].[table]

6. Update Software Components

Upgrade DBeaver

Older versions contain bugs affecting metadata:

  • Download the latest version from dbeaver.io
  • Confirmed fixed reports in v23.0.1+

Switch Database Driver

MariaDB users: Try the MySQL driver instead:

  1. Edit connection → Driver tab
  2. Switch from MariaDBMySQL driver

7. Advanced Validation Methods

🧪 Additional Diagnosis Steps

Check Table Metadata
Execute in your database:

sql
DESCRIBE your_table;  -- MySQL/MariaDB  
SELECT column_name FROM information_schema.columns  -- PostgreSQL
WHERE table_name = 'your_table';

Verify:

  1. Columns in the result match DBeaver's grid
  2. Primary keys are properly defined

Clean Restart

  1. Close DBeaver
  2. Delete temporary metadata:
    • macOS: ~/Library/DBeaverData/workspace6/.metadata
    • Windows: %AppData%\DBeaverData\workspace6\.metadata
  3. Restart DBeaver

When All Else Fails

  • Downgrade DBeaver to older stable versions (e.g., 22.2.2)
  • Report persistent bugs on GitHub Issues

Conclusion

This error occurs when DBeaver misaligns query results with table metadata. Start by refreshing table structures or disconnecting/reconnecting your session. If unresolved, validate your SQL syntax, driver choice, and editor settings—especially metadata toggles. Regular DBeaver updates prevent many of these issues from emerging. For recurring problems, fully qualify table names and maintain lowercase column aliases.

💡 Pro Tip: To avoid metadata sync issues when altering tables externally, always refresh DBeaver's connection after DDL changes.