PostgreSQL Generated Columns在DBeaver中报语法错误的解决办法
PostgreSQL生成列(Generated Columns)在DBeaver中的执行问题
环境信息
- PostgreSQL版本:
PostgreSQL 15.1, compiled by Visual C++ build 1914, 64-bit - DBeaver版本:
23.0.1.202303250535
问题描述
执行以下建表SQL(已知违反1NF):
CREATE TABLE employees ( first_name VARCHAR(50), last_name VARCHAR(50), full_name VARCHAR(100) GENERATED ALWAYS AS (first_name || ' ' || last_name) STORED );
报错信息:
SQL Error [42601]: ERROR: syntax error at or near "("
该SQL可在pgAdmin 4 version 6.15中成功执行,且查询到GitHub有相关支持Generated Columns的PR,疑问如下:
- DBeaver是否支持Generated Columns?
- 如何在DBeaver中成功执行该查询?
解答
DBeaver对Generated Columns的支持情况
DBeaver 23.0.1版本本身支持PostgreSQL生成列,出现语法报错大概率是SQL编辑器的语法校验/自动补全功能误判,而非数据库不支持该语法。
成功执行的解决方法
- 忽略编辑器提示直接执行:即使编辑器显示语法错误标识,直接点击执行按钮(或按快捷键
Ctrl+Enter),PostgreSQL 15本身支持该语法,通常可成功执行。 - 关闭SQL语法校验:打开DBeaver设置(快捷键
Ctrl+,),依次进入编辑器→SQL编辑器→语法校验,取消勾选"启用语法校验",或针对PostgreSQL数据源单独关闭该项。 - 升级DBeaver版本:若上述方法无效,建议升级到DBeaver最新稳定版本,后续版本对PostgreSQL 15生成列的语法兼容性更佳。
内容的提问来源于stack exchange,提问作者Candra wijayanto
相关产品推荐
相关产品推荐

