docs-v2/content/influxdb/v2.1/write-data/troubleshoot.md

85 lines
5.1 KiB
Markdown

---
title: Troubleshoot issues writing data
seotitle: Troubleshoot issues writing data to InfluxDB
weight: 106
description: >
Troubleshoot issues writing data. Find response codes for failed writes. Discover how writes fail, from exceeding rate or payload limits, to syntax errors and schema conflicts.
menu:
influxdb_2_1:
name: Troubleshoot issues
parent: Write data
influxdb/v2.1/tags: [write, line protocol, errors]
related:
- /influxdb/v2.1/api/#tag/Write, InfluxDB API /write endpoint
- /influxdb/v2.1/reference/internals
- /influxdb/v2.1/reference/cli/influx/write
---
Learn how to handle and recover from errors when writing to InfluxDB.
- [Discover common failure scenarios](#discover-common-failure-scenarios)
- [Review HTTP status codes](#review-http-status-codes)
- [Troubleshoot failures](#troubleshoot-failures)
## Discover common failure scenarios
Write requests made to InfluxDB may fail for a number of reasons.
Common failure scenarios that return an HTTP `4xx` or `5xx` error status code include the following:
- API token was invalid. . See how to [manage API tokens](/influxdb/v2.0/security/tokens/).
- Payload size was too large.
- Client or server reached a timeout threshold.
- Data was not formatted correctly.
To find the causes of a specific error, [review HTTP status codes](#review-http-status-codes).
### Troubleshoot partial writes
Writes may fail partially or completely even though InfluxDB returns an HTTP `2xx` status code for a valid request.
For example, a partial write may occur when InfluxDB writes all points that conform to the bucket schema, but rejects points that have the wrong data type in a field.
To resolve partial writes and rejected points, see [troubleshoot failures](#troubleshoot-failures).
## Review HTTP status codes
InfluxDB uses conventional HTTP status codes to indicate the success or failure of a request.
Write requests return the following status codes:
- `204` **Success**: InfluxDB validated the request data format and accepted the data for writing to the bucket.
{{% note %}}
`204` doesn't indicate a successful write operation since writes are asynchronous.
If some of your data did not write to the bucket, see how to [troubleshoot rejected points](#troubleshoot-rejected-points).
{{% /note %}}
- `400` **Bad request**: The [line protocol](/influxdb/v2.1/reference/syntax/line-protocol/) data in the request was malformed.
The response body contains the first malformed line in the data. All request data was rejected and not written.
- `401` **Unauthorized**: May indicate one of the following:
- [`Authorization: Token` header](/influxdb/v2.1/api-guide/api_intro/#authentication) is missing or malformed.
- [API token](/influxdb/v2.1/api-guide/api_intro/#authentication) value is missing from the header.
- API token does not have sufficient permissions to write to the organization and the bucket. For more information about token types and permissions, see [Manage API tokens](/influxdb/v2.1/security/tokens/)
- `404` **Not found**: A requested resource (e.g. an organization or bucket) was not found. The response body contains the requested resource type, e.g. "organization", and resource name.
- `413` **Request entity too large**: All request data was rejected and not written. InfluxDB OSS only returns this error if the [Go (golang) `ioutil.ReadAll()`](https://pkg.go.dev/io/ioutil#ReadAll) function raises an error.
- `500` **Internal server error**: Default HTTP status for an error.
- `503` **Service unavailable**: Server is temporarily unavailable to accept writes. The `Retry-After` header describes when to try the write again.
The `message` property of the response body may contain additional details about the error.
## Troubleshoot failures
If you notice data is missing in your bucket, do the following:
- Check the `message` property in the response body for details about the error
- Verify all lines contain valid syntax, e.g. [line protocol](/influxdb/v2.1/reference/syntax/line-protocol/) or [CSV](/influxdb/v2.1/reference/syntax/annotated-csv/)
- Verify the data types match other data points with the same series.
For example, did you attempt to write `string` data to an `int` field?
- Verify the timestamps match the [precision parameter](/influxdb/v2.1/write-data/#timestamp-precision).
- Minimize payload size and network errors by [optimizing writes](/influxdb/v2.1/write-data/best-practices/optimize-writes/)
### Troubleshoot rejected points
InfluxDB may reject points even if the HTTP request returns "Success".
If some of your data did not write to the bucket, check for [field type](/influxdb/v2.1/reference/key-concepts/data-elements/#field-value) differences between the missing data point and other points that have the same [series](/influxdb/v2.1/reference/key-concepts/data-elements/#series).
For example, did you attempt to write `string` data to an `int` field?
InfluxDB rejects points for the following reasons:
- The **batch** contains another point with the same series, but one of the fields has a different value type.
- The **bucket** contains another point with the same series, but one of the fields has a different value type.