dbeaver icon indicating copy to clipboard operation
dbeaver copied to clipboard

SQL editor results not editable - Unique key: Table Metadata not found.

Open aespejou opened this issue 10 months ago • 13 comments

Description

I upgraded from version 24.3.3 to 25.0.0. Also tried early access 25.0.1 and same problem. The following was not happening in 24.3.3. Also tried clean install (removing all folders I could find in my PC related to dbeaver).

  1. When querying a simple table "Select * from sample" seems that it is querying the entire results because it takes 10-15 seconds to retrieve results. But on the bottom it says it took 0.323 s (0.146s fetch for example: which is not true. I have it set to retrieve only 200 records.

  2. Then I cannot edit any record because I get the orange circle on the top left corner of the results saying "Unique key: Table Metadata not found. Data edit is not possible." My table does have a a unique key.

Image

  1. I found that if I query the table in brackets or quotes it runs normal, quick results retrieval and green circle indicating records are editable.

Image

  1. Other tables in the same database do work fine without brackets but others do not.

Image

DBeaver Version

Community Edition 25.0.1.202503050022

Operating System

Windows 10

Database and driver

Microsoft SQL Server 2017 (RTM-CU31) (KB5016884) - 14.0.3456.2 (X64)

Microsoft JDBC Driver for SQL Server SQLJDBCDriver

Steps to reproduce

Steps to reproduce are in the description.

Additional context

I have installed the office extension and works fine in 25.0.0. I tried downgrading to the previous working dbeaver 24.3.3 but found the office extension does not work on this version anymore. Since I use a lot the office extension I am stuck with 25.0.1 but having a hard time remembering to run my queries with tables in brackets.

aespejou avatar Mar 06 '25 16:03 aespejou

same here tried dbeaver v24.3.5 and 25.0.0 on Windows 11. seems like something broken since 24.3.3

developerasun avatar Mar 09 '25 13:03 developerasun

Unfortunately, I cannot reproduce the issue. Could you provide clear steps to reproduce it? We're interested in the exact table DDL

E1izabeth avatar Mar 13 '25 11:03 E1izabeth

DDL of SAMPLE table:

CREATE TABLE LIMSAmericaAlpha.dbo.SAMPLE ( SAMPLE_ID varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS DEFAULT NULL NOT NULL, REG_ON datetime DEFAULT getdate() NULL, REG_BY varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS DEFAULT left(user_name(),(20)) NULL, ENT_ON datetime NULL, ENT_BY varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, APP_ON datetime NULL, APP_BY varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CERT_ON datetime NULL, CERT_BY varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SAMPLE_STATUS varchar(5) COLLATE SQL_Latin1_General_CP1_CI_AS DEFAULT 'N' NULL, SUBMITTER varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SAMPLE_TYPE varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, PRIORITY varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TEXT1 varchar(70) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TEXT2 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TEXT3 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TEXT4 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TEXT5 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TEXT6 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TEXT7 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TEXT8 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TEXT9 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TEXT10 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, DATE1 datetime NULL, DATE2 datetime NULL, DATE3 datetime NULL, DATE4 datetime NULL, REMARKS varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, LOT varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, STAB_SUBM_NO int NULL, MFG_DATE datetime NULL, EXPIRATION_DATE datetime NULL, HOLD_TIME int NULL, TIME_UNITS varchar(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, STORAGE_COND varchar(40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, APPROVAL_NOTES varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, STORAGE_LOCATION varchar(40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, STORAGE_QUANTITY varchar(40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, PROJECT_NO varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, METHOD_SUBCLASS varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SPEC_STATUS varchar(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SOURCE_SAMPLE varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, HAZARDS varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, HANDLING varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CUSTOMER_ID varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, NUMERIC1 decimal(28,8) NULL, OWNER varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, USE_SAMPLE_TRIG varchar(1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, MODIFIED_ON datetime NULL, MODIFIED_BY varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, MOD_REASON varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SQC_ID int IDENTITY(1,1) NOT NULL, SQC_DROP int DEFAULT 0 NULL, SQC_DROP_REASON varchar(250) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SQC_DROP_ON datetime NULL, SQC_DROP_BY varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SAMPLE_NO AS ([SQC_ID]) NOT NULL, SAMPLETYPE_ID int NULL, COA_URL varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, MKT_SYNONYM varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, STANDARD varchar(3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, FORMULA_ID int NULL, ORG_REP_SAMPLE_ID varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, MERGED_SAMPLE_ID varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, REPOSITORY_CODE varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, REPOSITORY_POSITION_CODE varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, DISPOSAL_DATE datetime NULL, DISPOSED_BY varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SITE_CODE varchar(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, POSITION_CODE varchar(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SITE_SAMPLE_REG_ID int NULL, SITE_BATCH_ID varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SPONSOR_NAME varchar(80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SPONSOR varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, MANUFACTURER varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, MANUFACTURER_NAME varchar(80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, QUOTATION_ID varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, PRICING_NO varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, INVOICE_ID varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, WAIVER_ID varchar(40) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, LOGIN_TYPE varchar(12) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SQC_STATUS varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ORIGINAL_SAMPLE varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CODE_1 varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CODE_2 varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CODE_3 varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CODE_4 varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CODE_5 varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, AUDIT_USER varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, AUDIT_COMMENT varchar(250) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, WORKDER varchar(8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SHELF_LIFE_STATUS varchar(10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, DUE_DATE datetime NULL, LATITUDE varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, LONGITUDE varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, APPROVAL_COUNTER int NULL, AUDIT_DEL_USER varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CONSTRAINT PK_SAMPLE PRIMARY KEY (SQC_ID) ); CREATE NONCLUSTERED INDEX IX_SAMPLE_STATUS_STANDARD_ID ON LIMSAmericaAlpha.dbo.SAMPLE ( SAMPLE_STATUS ASC , STANDARD ASC )
INCLUDE ( SAMPLE_ID ) WITH ( PAD_INDEX = OFF ,FILLFACTOR = 100 ,SORT_IN_TEMPDB = OFF , IGNORE_DUP_KEY = OFF , STATISTICS_NORECOMPUTE = OFF , ONLINE = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY ] ; CREATE NONCLUSTERED INDEX IX_SAMP_LOT ON LIMSAmericaAlpha.dbo.SAMPLE ( LOT ASC , SAMPLE_STATUS ASC )
INCLUDE ( SAMPLE_ID ) WITH ( PAD_INDEX = OFF ,FILLFACTOR = 90 ,SORT_IN_TEMPDB = OFF , IGNORE_DUP_KEY = OFF , STATISTICS_NORECOMPUTE = OFF , ONLINE = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY ] ; CREATE NONCLUSTERED INDEX IX_SAMP_STATUS ON LIMSAmericaAlpha.dbo.SAMPLE ( SAMPLE_STATUS ASC , SAMPLE_ID ASC , LOT ASC , SAMPLETYPE_ID ASC , SAMPLE_TYPE ASC , MFG_DATE ASC )
INCLUDE ( CUSTOMER_ID , MKT_SYNONYM ) WITH ( PAD_INDEX = OFF ,FILLFACTOR = 90 ,SORT_IN_TEMPDB = OFF , IGNORE_DUP_KEY = OFF , STATISTICS_NORECOMPUTE = OFF , ONLINE = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY ] ; CREATE NONCLUSTERED INDEX IX_SAMP_STID ON LIMSAmericaAlpha.dbo.SAMPLE ( SAMPLETYPE_ID ASC )
WITH ( PAD_INDEX = OFF ,FILLFACTOR = 90 ,SORT_IN_TEMPDB = OFF , IGNORE_DUP_KEY = OFF , STATISTICS_NORECOMPUTE = OFF , ONLINE = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY ] ; CREATE NONCLUSTERED INDEX IX_WAIVER_ID ON LIMSAmericaAlpha.dbo.SAMPLE ( WAIVER_ID ASC )
WITH ( PAD_INDEX = OFF ,FILLFACTOR = 100 ,SORT_IN_TEMPDB = OFF , IGNORE_DUP_KEY = OFF , STATISTICS_NORECOMPUTE = OFF , ONLINE = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY ] ; CREATE UNIQUE NONCLUSTERED INDEX UI_SAMPLE_SAMPLE_ID ON LIMSAmericaAlpha.dbo.SAMPLE ( SAMPLE_ID ASC )
INCLUDE ( SQC_ID ) WITH ( PAD_INDEX = OFF ,FILLFACTOR = 100 ,SORT_IN_TEMPDB = OFF , IGNORE_DUP_KEY = OFF , STATISTICS_NORECOMPUTE = OFF , ONLINE = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY ] ;

aespejou avatar Mar 18 '25 00:03 aespejou

  1. When running the query with the table without quotes or brackets, takes a long time to retrieve and results are not editable (fetch time is not accurate):

Image

  1. When running the query with the table in quotes or brackets runs fine and results are editable (the fetch time is accurate):

Image

aespejou avatar Mar 18 '25 00:03 aespejou

Some tables run OK without using quotes or brackets. For example ADDRESS table:

Image

aespejou avatar Mar 18 '25 00:03 aespejou

DDL for ADDRESS table is as follows:

CREATE TABLE LIMSAmericaAlpha.dbo.ADDRESS ( LF_N varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, CONTACT varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, DEPARTMENT varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, COMPANY varchar(80) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL, STREET1 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, STREET2 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CITY varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, STATE varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ZIP varchar(12) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TELEPHONE varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, FAX varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CLASS varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, COMMENTS varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_CONTACT varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_DEPARTMENT varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_COMPANY varchar(80) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_STREET1 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_STREET2 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, STREET3 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, STREET4 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_STREET3 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_STREET4 varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_CITY varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_STATE varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, COUNTRY varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_COUNTRY varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_ZIP varchar(12) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_TELEPHONE varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_FAX varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, DISCOUNT decimal(28,8) NULL, OWNER varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TITLE varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_TITLE varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_ADDRESS_AS varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ADDRESS_AS varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, EMAIL varchar(70) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ST_EMAIL varchar(70) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, LOT_REPORT varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, COA_XSL varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, DOCUMENT_FORMAT varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ACTIVE int DEFAULT 0 NULL, ADDRESS_ID int IDENTITY(1,1) NOT NULL, AUDIT_USER varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, AUDIT_COMMENT varchar(250) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SALES_TERRITORY varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SALES_REGION varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SALES_REP varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TECHNICAL_REP varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SALES_MANAGER varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, LOT_REPORT_FOLDER varchar(150) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TMS_CODE varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TERRITORY varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, REGION varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, TECH_REP varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, COA_REPORT varchar(150) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, COA_FOLDER varchar(150) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, LEGACY_CUST_NO varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CSV_REPORT varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, XML_REPORT varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, DOC_REPORT varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, XLS_REPORT varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, XSL_TRANSFORM varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, KTMS_CODE varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, BODY varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SUBJECT varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, FILE_FORMAT varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, XML_FILE_LOCATION varchar(254) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CELL_PHONE_NO varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, WEB_ADDRESS varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CLIENT_STATUS varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ACCOUNT_CODE varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CLIENT_ACQ_METHOD varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, SEASONAL_GIFT varchar(30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, ENTERED_ON datetime NULL, HIRE_DATE datetime NULL, CURRNT_POS_DATE datetime NULL, EMPLOYMENT_END_DATE datetime NULL, POSITION_TITLE varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, JOB_DESCRIPTION varchar(500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, DEPARTMENTS varchar(100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, AUDIT_DEL_USER varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, CONSTRAINT PK_ADDRESS PRIMARY KEY (ADDRESS_ID) ); CREATE UNIQUE NONCLUSTERED INDEX UI_ADDR_LFN ON LIMSAmericaAlpha.dbo.ADDRESS ( LF_N ASC )
WITH ( PAD_INDEX = OFF ,FILLFACTOR = 90 ,SORT_IN_TEMPDB = OFF , IGNORE_DUP_KEY = OFF , STATISTICS_NORECOMPUTE = OFF , ONLINE = OFF , ALLOW_ROW_LOCKS = ON , ALLOW_PAGE_LOCKS = ON ) ON [PRIMARY ] ;

aespejou avatar Mar 18 '25 00:03 aespejou

thanks for the report

Issue was reproduced using query below https://github.com/dbeaver/dbeaver/issues/37459#issuecomment-2731232110

uslss avatar Mar 26 '25 13:03 uslss

I'm having a similar problem with Postgres 17 and dBeaver Version 25.0.2.202504061727 in Windows 11 (connected to a debian-hosted local Postgres server).

This query fails (look for the orange dot in the header of the results grid):

Image

No matter what I did—comment out joins, all the WHERE clause, replacing the SELECT list with * to simplify the query—no matter what I did, the data grid would open up read-only. All tables involved (or just the one in the simple query have Primary Keys that I bring along into the queries.

On a whim, I cut and pasted that simple SELECT * FROM et query to the empty space at the bottom of the file, and the query came up writable. I re-added joins and WHERE clauses, and it still worked. Added more conditions and the ORDER BY, and still have the green dot and writable grid.

Image

Seems like something vestigial about the area of the file where the old query was located may be confusing dBeaver about metadata,

On the failing query, I tried disconnecting, closing and restarting dBeaver, invalidating/reconnecting, and the table remained read-only. Only when I picked up pieces of SQL and pasted them into a different set of line numbers was I able to get to green dot/metadata found/table editable status.

Last thing I tried was to double-quote the query elements, the Postgres equivalent similar to OP's square brackets fix in MS SQL. That did not work (I hovered over to get the error message):

Image

I've uploaded images instead of code because all I did was highlight, copy, and paste from the faulty query to a new query at the end of the file (note the code line numbers). The OP here observed this behavior in MS SQL, and yet here I am in a Postgres environment and getting similar metadata read/write status confusion as the bug's author. This points to client issue and not the msSQL or Postgres back-ends. It's as if dBeaver is retaining some hidden metatdata or key blocking condition around those original lines of code that can be fixed by a repaste or rewrite of the same code. This is the same kind of inconsistency the OP addressed by using bracket enclosures around MS SQL elements.

You might guess this has something to do with taxes and you would be right.

wistlo avatar Apr 13 '25 19:04 wistlo

In my case, my problem was myself 😬. A while ago, I disabled the metadata function (for some reason) and forgot to turn it on again.

You can enable it by right-clicking on the connection, "Edit connection" -> "Metadata" -> Check "Datasource 'dbnamehere' settings" -> Uncheck "Performance -> Do not read tables information in SQL and data editors"

Image

Hope it helps someone!

pferreirafabricio avatar Jun 03 '25 15:06 pferreirafabricio

Verified and performance settings are both disabled in my instance of dbeaver. Still having problem with circle not green (not editable). I am now on most recent version 25.1. My workaround is to place either brackets or quotes on the table. After this it does go green and I can edit the table.

aespejou avatar Jun 03 '25 18:06 aespejou

Hi, i have similar problem with hana db. Solved setting the corresponding default database:

Image

cfb95 avatar Jun 21 '25 14:06 cfb95

As addition to @pferreirafabricio comment:

I used only the global settings (disabled the data source settings). Fiddling with this setting seems to change the way the information is read or cached. Now the PK information is known to DBeaver also when disabling the data source setting.

dentsu-sh avatar Sep 09 '25 13:09 dentsu-sh

Hi all

I had the same problem and solved it by removing commet in WHERE clause.

DBeaver 25.2.5

Example:

SELECT * FROM page_url WHERE ( id = '000000237-000001543' # this comment will disable edit );

bar24 avatar Nov 21 '25 21:11 bar24