数据库

错误码

Database 错误的状态码、PostgREST code 与重试属性。

管理端点返回领域码;两个表端点返回 PostgREST code。HTTP 状态与重试属性如下。

领域码HTTPPostgREST code可重试
SINGULAR_MISMATCH406PGRST116否
AMBIGUOUS_EMBED300PGRST201否
EMBED_NOT_FOUND400PGRST200否
INVALID_PREFERENCE400PGRST122否
QUERY_CANCELED50057014否
RANGE_NOT_SATISFIABLE416PGRST103否
NOT_ACCEPTABLE406PGRST107否
OPERATOR_TYPE_MISMATCH40042883否
DATABASE_NOT_FOUND404PGRST125否
TABLE_NOT_FOUND404PGRST205否
FIELD_NOT_FOUND40042703否
VALIDATION_FAILED40023514否
UNIQUE_VIOLATION40923505否
REFERENCE_RESTRICT40923503否
FIELD_TYPE_IMMUTABLE400—否
LIMIT_EXCEEDED40054000否
UNSUPPORTED400PGRST127否
INVALID_PARAMS400PGRST100否
DATABASE_INVALID_STATE409—否
CAPACITY503—是
NOT_IMPLEMENTED501PGRST127否

可重试不表示重复原请求一定成功。例如 57014 应先缩小查询范围或调整过滤条件,再重试。

管理端点错误体

响应示例 — HTTP 400

{
  "code": "FIELD_TYPE_IMMUTABLE",
  "message": "field type is immutable",
  "details": null,
  "hint": null
}

表端点错误体

响应示例 — HTTP 400

{
  "code": "PGRST127",
  "message": "operator fts is not supported",
  "details": null,
  "hint": null
}

code、message、details、hint 四个字段始终存在;details 与 hint 可以为 null。

未开放服务错误体

响应示例 — HTTP 501

响应头值
x-should-retryfalse
{
  "code": "not_implemented",
  "message": "auth is not provided by praxis-database"
}

这五个服务直接返回 not_implemented;它与错误表中的领域码 NOT_IMPLEMENTED 不同。

按错误细节修正请求

保留字段名只有 id;新字段名不能以 _ 开头,这个前缀留给系统元数据。created_at、updated_at、version 可用作普通字段名。datetime 字段可用 "now()" 作为默认值。

details 指出字段或 JSON 路径及实际收到的值,批量校验还包含从 0 开始的行号。值最多显示 80 个字符,不回显整行。hint 给出修正方式,没有建议时为 null。下面是省略第 2 行必填 title 的错误示例:

{
  "code": "23514",
  "message": "row validation failed",
  "details": "row 1: title: required value (got null)",
  "hint": "Rows in one insert are filled to the union of their keys with null (PostgREST behavior). Send every key in every row, or send Prefer: missing=default to use field defaults."
}

唯一冲突返回 409,例如:

{
  "code": "23505",
  "message": "unique constraint violated",
  "details": "Key (email)=(a@b.c) already exists.",
  "hint": null
}
导出

本页内容