解决写入数据问题时
了解如何避免意外结果并在将数据写入 InfluxDB 集群时从错误中恢复。
处理写入响应
当您发送写入请求时,InfluxDB 集群执行以下操作
验证请求。
如果成功,尝试从请求体中摄取数据;否则,返回一个错误状态。
批量摄取或拒绝数据,并返回以下 HTTP 状态码之一
204 No Content
:批量中的所有数据都已摄取。400 Bad Request
:部分或全部数据已被拒绝。未拒绝的数据已被摄取并可查询。
响应体包含有关拒绝的数据点的错误详细信息,最多 100 个点。
写入是同步的–响应状态指示写入的最终状态,所有摄取的数据都可查询。
为确保 InfluxDB 按您请求的顺序处理写入,在发送下一个请求之前请等待响应。
审查 HTTP 状态码
InfluxDB 使用传统的 HTTP 状态码来指示请求的成功或失败。响应体的 message
属性可能包含有关错误的详细信息。写入请求返回以下状态码:
HTTP 响应码 | 消息 | 描述 |
---|---|---|
204 "成功" | 如果 InfluxDB 已摄取数据 | |
400 "无效请求" | 拒绝的数据点错误详情,最多100个点:line 包含第一个拒绝的行,message 描述拒绝原因 | 如果某些或全部请求数据不允许(例如,如果其格式不正确或超出桶的保留期)——响应体指示是否发生了部分写入或所有数据已被拒绝 |
401 "未经授权" | 如果缺少或格式不正确的 Authorization 标头,或者如果 令牌 没有写入数据库的 权限。请参阅写入请求中使用的 凭据示例。 | |
404 "未找到" | 请求的 资源类型(例如,“组织”或“数据库”),和 资源名称 | 如果请求的资源(例如,组织或数据库)未找到 |
500 "内部服务器错误" | 错误的默认状态 | |
503 “服务不可用” | 如果服务器暂时不可用以接受写入。 Retry-After 标头描述了何时再次尝试写入。 |
如果您的数据未写入数据库,请参阅如何 调试拒绝的点。
解决失败问题
如果您注意到数据库中缺少数据,请执行以下操作
- 检查响应体中的
message
属性以获取关于错误的详细信息。 - 如果
message
描述了字段错误,请 调试拒绝的点。 - 验证所有行都包含有效的语法(行协议)。
- 验证数据中的时间戳与请求中的 精度参数 相匹配。
- 通过 优化写入 来最小化有效负载大小和网络错误。
解决拒绝的数据点问题
InfluxDB 拒绝与现有桶数据位于同一分区(默认分区是按测量和日期进行)且现有字段的类型不同的点。
检查拒绝的数据点与同一数据库和分区内的点之间的 字段数据类型 差异——例如,您是否尝试将 string
数据写入 int
字段?
这个页面有帮助吗?
感谢您的反馈!