文档文档

解决写入数据时遇到的问题

InfluxDB 3 Core 处于公开 Alpha 阶段

InfluxDB 3 Core 目前处于公开 alpha 阶段,可用于测试和反馈,但不适合生产环境使用。该产品和本文档均在开发中。我们欢迎并鼓励您提供关于 alpha 体验的意见,并邀请您加入我们的公共频道以获取更新和分享反馈。

Alpha 预期和建议

了解如何在写入 InfluxDB 3 Core 时避免意外结果并从错误中恢复。

处理写入响应

当您发送写入请求时,InfluxDB 3 Core 会执行以下操作

  1. 验证请求。

  2. 如果成功,则尝试从请求正文中摄取数据;否则,使用错误状态响应。

  3. 摄取或拒绝批处理中的数据,并返回以下 HTTP 状态码之一

    • 204 No Content: 批处理中的所有数据均已摄取。
    • 400 Bad Request: 部分或全部数据已被拒绝。未被拒绝的数据将被摄取并可查询。

响应正文包含关于被拒绝的点的错误详细信息,最多 100 个点。

写入是同步的——响应状态指示写入的最终状态,并且所有摄取的数据都可查询。

为了确保 InfluxDB 按照您请求的顺序处理写入,请在发送下一个请求之前等待响应。

查看 HTTP 状态码

InfluxDB 3 Core 使用传统的 HTTP 状态码来指示请求的成功或失败。响应正文的 message 属性可能包含关于错误的更多详细信息。写入请求返回以下状态码

HTTP 响应代码消息描述
204 "Success"如果 InfluxDB 摄取了数据
400 "Bad request"关于被拒绝的点的错误详细信息,最多 100 个点:line 包含第一个被拒绝的行,message 描述拒绝原因如果部分或全部请求数据不允许(例如,如果格式错误或超出存储桶的保留期)——响应正文指示是否发生了部分写入,或者是否所有数据都被拒绝
401 "Unauthorized"如果缺少或格式错误的 Authorization 标头,或者如果 token 没有权限写入数据库。请参阅写入请求中使用凭据的示例
404 "Not found"请求的资源类型(例如,“organization”或“database”)和资源名称如果找不到请求的资源(例如,organization 或 database)
500 "Internal server error"错误的默认状态
503 “Service unavailable”如果服务器暂时无法接受写入。Retry-After 标头描述何时再次尝试写入。

如果您的数据未写入数据库,请参阅如何排查被拒绝的点

排查失败

如果您注意到数据库中缺少数据,请执行以下操作

  • 检查响应正文中的 message 属性,以获取关于错误的详细信息。
  • 如果 message 描述了字段错误,请排查被拒绝的点
  • 验证所有行是否包含有效的语法 (Line Protocol)。
  • 验证数据中的时间戳是否与请求中的精度参数匹配。
  • 通过优化写入,最大限度地减少有效负载大小和网络错误。

排查被拒绝的点

InfluxDB 会拒绝与现有数据 Schema 不匹配的点。

检查被拒绝的数据点与同一数据库中的点之间是否存在字段数据类型差异——例如,您是否尝试将 string 数据写入 int 字段?


此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像目前一样使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已发布公开 Alpha 版

InfluxDB 3 开源版本现已可用于 alpha 测试,根据 MIT 或 Apache 2 许可获得许可。

我们正在发布两个产品作为 alpha 版本的一部分。

InfluxDB 3 Core 是我们的新开源产品。它是一个用于时间序列和事件数据的最新数据引擎。InfluxDB 3 Enterprise 是一个商业版本,它建立在 Core 的基础上,增加了历史查询功能、读取副本、高可用性、可扩展性和细粒度的安全性。

有关如何开始使用的更多信息,请查看