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!;
// …
}
把上面两段信息放在一起,问题就浮出水面了:
| Drugs |

![P11246 [GESP202409 六级] 小杨和整数拆分-171主机测评](https://www.171host.com/wp-content/uploads/2026/11/20261108100631-6af049a75855c-220x150.png)


