欢迎光临
我们一直在努力

SqlSugar 连接 PostgreSQL 报错 42P01: relation does not exist 的排查与修复

SqlSugar 连接 PostgreSQL 报错 42P01: relation does not exist 的排查与修复

    • 一、问题现象
    • 二、从 SQL 日志中找线索
    • 三、PostgreSQL 的大小写敏感规则
    • 四、真正的根因:缺少 `ConnMoreSettings` 配置
    • 五、修复方案
    • 六、验证步骤
    • 七、经验总结

一、问题现象

在项目中调用 GET /api/drugs?drugId=xxx 接口时,服务端抛出 500 异常,日志关键信息如下:

2026-06-15 17:09:37.599 +08:00 [ERR] An unhandled exception has occurred while executing the request.
Npgsql.PostgresException (0x80004005): 42P01: relation \”drugs\” does not exist
at SqlSugar.QueryableProvider`1.FirstAsync()
at …Services.DrugService.GetDrugByIdAsync(String drugId)
at …Controllers.DrugController.GetDrugByIdAsync(String drugId)

报错代码 42P01 在 PostgreSQL 中代表「关系不存在」,通常是指查询中引用的表(或视图)在当前数据库内找不到。

二、从 SQL 日志中找线索

打开 Program.cs 查看 SqlSugar 注册代码,注意到配置了 Aop.OnLogExecuting 事件,所以日志中完整输出了生成的 SQL:

SQL: SELECT \”id\”,\”name\”,\”normalizedname\”,… FROM \”drugs\” WHERE ( \”id\” = @Id0 ) LIMIT 1 offset 0

与此同时,Drugs 实体类定义在 MyCommon/Entities/Drugs.cs 中:

[SugarTable(\”Drugs\”)]
public partial class Drugs
{


[SugarColumn(IsPrimaryKey = true)]
public string Id {

get; set; } = null!;
public string Name {

get; set; } = null!;
// …
}

把上面两段信息放在一起,问题就浮出水面了:

代码中的名称
SQL 中实际出现的名称
Drugs
赞(0)
未经允许不得转载:171主机测评 » SqlSugar 连接 PostgreSQL 报错 42P01: relation does not exist 的排查与修复
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址