解决写入数据时遇到的问题
了解如何避免意外结果以及在写入 InfluxDB 时从错误中恢复。
处理 write
和 delete
响应
如果 InfluxDB OSS 成功将所有请求数据写入桶,InfluxDB 将返回成功(HTTP 204
状态代码)。批处理中的第一个被拒绝的点会导致 InfluxDB 拒绝整个批处理,并返回 HTTP 错误状态。
查看 HTTP 状态代码
InfluxDB 使用传统的 HTTP 状态代码来指示请求的成功或失败。写入请求返回以下状态代码
204
成功:所有请求数据都已写入桶。400
错误请求:请求中的 行协议 数据格式错误。响应正文包含数据中第一个格式错误的行。所有请求数据都被拒绝且未写入。401
未授权:可能指示以下情况之一Authorization: Token
标头 缺失或格式错误。- API 令牌 值从标头中缺失。
- API 令牌没有足够的权限写入组织和桶。有关令牌类型和权限的更多信息,请参阅 管理 API 令牌。
404
未找到:未找到请求的资源(例如,组织或桶)。响应正文包含请求的资源类型,例如“organization”和资源名称。413
请求实体过大:所有请求数据都被拒绝且未写入。仅当 Go (golang)ioutil.ReadAll()
函数引发错误时,InfluxDB OSS 才会返回此错误。500
内部服务器错误:错误的默认 HTTP 状态。503
服务不可用:服务器暂时不可用,无法接受写入。Retry-After
标头描述了何时再次尝试写入。
响应正文的 message
属性可能包含有关错误的更多详细信息。如果您的某些数据未写入桶,请参阅如何 解决被拒绝的数据点问题。
解决故障
如果您注意到桶中缺少数据,请执行以下操作
- 检查响应正文中的
message
属性,以获取有关错误的详细信息。 - 如果
message
描述了字段错误,请解决被拒绝的数据点问题。 - 验证所有行是否包含有效语法(行协议 或 CSV)。
- 验证时间戳是否与 精度参数 匹配。
- 通过优化写入来最小化有效负载大小和网络错误。
解决被拒绝的数据点问题
InfluxDB 出于以下原因拒绝数据点
- 批处理包含另一个具有相同系列的数据点,但其中一个字段具有不同的值类型。
- 桶包含另一个具有相同系列的数据点,但其中一个字段具有不同的值类型。
检查缺失数据点与具有相同系列的其他数据点之间是否存在字段类型差异——例如,您是否尝试将 string
数据写入 int
字段?
此页是否对您有帮助?
感谢您的反馈!