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
- In the Database Navigator (left panel)
- Right-click your table → Refresh
⇒ If table-level refresh fails, refresh specific columns - Expand table → Right-click Columns → Refresh
Reconnect Your Session
Disconnect and reconnect to force metadata reload:
- Right-click your database connection
- Select Disconnect
- Right-click again → Reconnect
🔁 This method resolved the issue for 101 users
2. Verify Critical Editor Settings
Improper metadata settings block column detection:
- Navigate to:
Preferences → Editors → Data Editor → Metadata - Enable:
- ☑
Read table metadata (unique keys)
- ☑
Read table references (foreign keys)
- ☑
- Restart DBeaver after changes
⚠️ Note: Enabling these options may slow large table loads but is required for editing.
3. Unlock the Data Grid
🔒 Check for an accidental lock toggle:
- In the SQL Editor window
- Locate the lock icon in the toolbar
- Ensure it's blue (unlocked), not yellow (locked)
4. Fix SQL Query Structure
Syntax nuances can confuse DBeaver's parser:
Separate Comments Properly
Insert an empty line between a comment and SELECT
:
# 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:
-- 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:
-- ❌ 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:
-- 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:
- Edit connection → Driver tab
- Switch from
MariaDB
→MySQL
driver
7. Advanced Validation Methods
🧪 Additional Diagnosis Steps
Check Table Metadata
Execute in your database:
DESCRIBE your_table; -- MySQL/MariaDB
SELECT column_name FROM information_schema.columns -- PostgreSQL
WHERE table_name = 'your_table';
Verify:
- Columns in the result match DBeaver's grid
- Primary keys are properly defined
Clean Restart
- Close DBeaver
- Delete temporary metadata:
- macOS:
~/Library/DBeaverData/workspace6/.metadata
- Windows:
%AppData%\DBeaverData\workspace6\.metadata
- macOS:
- 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.