You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需加双引号,如何在DBeaver中直接使用EF Core生成的PostgreSQL查询?

解决DBeaver直接运行EF Core生成的PostgreSQL SQL报错问题

这个问题本质是PostgreSQL的标识符大小写规则和DBeaver默认行为的冲突:EF Core生成的SQL里的表/字段名是大小写混合的(比如UserProfile、CreatedAt),而PostgreSQL会把未加双引号的标识符自动转为小写——但你的数据库表/字段是EF Core用双引号创建的(所以实际名称是大小写敏感的"UserProfile"而不是小写的userprofile),这就导致DBeaver执行未加双引号的SQL时找不到对象,触发42P01(表不存在)或42703(字段不存在)错误。

下面是具体的DBeaver配置步骤,让你直接粘贴EF生成的SQL就能运行:

方法1:修改单个连接的标识符处理设置

  1. 在DBeaver中找到你的PostgreSQL连接,右键点击它,选择「编辑连接」
  2. 在弹出的窗口中切换到「SQL编辑器」标签页
  3. 找到「标识符」区域,勾选**「自动引用标识符」,并将「大小写转换」设置为「保留原样」**
  4. 点击「确定」保存设置,重新连接数据库后再测试

方法2:全局配置所有SQL编辑器的行为

如果你希望所有PostgreSQL连接都生效,可以修改全局偏好设置:

  1. 打开DBeaver的偏好设置:Windows/Linux点击「编辑」→「偏好设置」;Mac点击「DBeaver」→「偏好设置」
  2. 导航到「数据库」→「SQL编辑器」→「格式化」
  3. 在「标识符」部分:
    • 将「大小写转换」改为**「保留原样」**
    • 勾选**「引用大小写混合的标识符」**
  4. 保存设置后,重启DBeaver生效

验证设置

粘贴一段EF Core生成的SQL(比如SELECT Id, Email FROM UserProfile WHERE CreatedAt > '2024-01-01'),DBeaver现在会自动把大小写混合的标识符加上双引号,转成PostgreSQL能识别的SELECT "Id", "Email" FROM "UserProfile" WHERE "CreatedAt" > '2024-01-01',不会再触发报错。

另外补充一点:如果你的EF Core配置是刻意保留了模型的大小写(比如没有使用小写命名约定),那么数据库里的对象确实是大小写敏感的,上面的配置就是让DBeaver自动适配这种情况,不用手动加双引号。

内容的提问来源于stack exchange,提问作者Eric Ouellet

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:45:38