All Products
Search
Document Center

Tablestore:Error codes

Last Updated:Feb 27, 2026

This topic lists common errors returned by Tablestore, organized by category: permission verification, HTTP message, API operation, and server errors. Use the error code, HTTP status code, and error message to identify and resolve issues.

The Retry column indicates whether retrying the request can resolve the error. "Yes" means the error is transient and retrying with exponential backoff may succeed. "No" means you must fix the underlying issue before retrying.

How to use this reference

When your application receives an error from Tablestore:

  1. Locate the error code (OTS-prefixed) in the tables below.

  2. Check the HTTP status code to confirm the error category.

  3. Read the description for the root cause and resolution.

  4. Check the Retry column to determine whether your application should retry the request.

Key abbreviations used in this document:

  • Capacity unit (CU): The unit of measurement for read and write throughput in Tablestore.

  • Time to live (TTL): The duration for which data is retained before automatic expiration.

Permission verification errors

All permission verification errors return HTTP status code 403 and are not retryable. Fix the credential, permission, or network configuration before retrying.

HTTP status codeError codeError messageDescriptionRetry
403OTSAuthFailedThe AccessKeyID does not exist.The AccessKey ID does not exist. Verify that the AccessKey ID is correct.No
403OTSAuthFailedThe AccessKeyID is disabled.The AccessKey ID is disabled. Enable it in the Alibaba Cloud console or use a different one.No
403OTSAuthFailedThe user does not exist.The specified user does not exist. Verify that the RAM user account is valid.No
403OTSAuthFailedThe instance is not found.The specified instance does not exist. Verify the instance name and region.No
403OTSAuthFailedThe user has no privilege to access the instance.You do not have permissions to access the instance. Grant the required permissions to the RAM user.No
403OTSAuthFailedThe instance is not running.The instance is not in the Running state. Check the instance status in the Tablestore console.No
403OTSAuthFailedSignature mismatch.The request signature does not match the signature you provided. Verify the AccessKey Secret and signing algorithm.No
403OTSAuthFailedMismatch between system time and x-ots-date: {Date}.The difference between the server time and the time specified by the x-ots-date parameter exceeds the allowed range. Synchronize your system clock.No
403OTSAuthFailedRequest denied by instance ACL policies.The request is rejected because the network type of the client is not allowed by the instance. For more information, see the "Request denied by instance ACL policies" exception that occurs when you use a Tablestore SDK to access Tablestore.No
403OTSNoPermissionAccessYou have no permission to access the requested resource, please contact the resource ownerYou do not have permissions to manage the resource. Contact the resource owner for authorization. For more information, see Use a RAM policy to grant permissions to a RAM user.No

HTTP message errors

These errors indicate issues with the HTTP request itself, such as invalid headers, unsupported methods, or request size limits. All HTTP message errors are not retryable.

HTTP status codeError codeError messageDescriptionRetry
413OTSRequestBodyTooLargeThe size of POST data is too large.The POST request body exceeds the size limit. Reduce the request body size.No
408OTSRequestTimeoutRequest timeout.The request timed out on the client side. Check network connectivity and increase the timeout setting if needed.No
405OTSMethodNotAllowedOTSMethodNotAllowedOnly POST method for requests is supported.The request method is not supported. Only POST requests are supported.No
403OTSAuthFailedMismatch between MD5 value of request body and x-ots-contentmd5 in header.The MD5 value calculated from the request body differs from the value specified by x-ots-contentmd5 in the request header. Recalculate the MD5 hash.No
400OTSParameterInvalidMissing header: {HeaderName}.A required header is missing. Add the specified header to the request.No
400OTSParameterInvalidInvalid date format: {Date}.The date format is invalid. Use a valid date format.No
400OTSParameterInvalidUnsupported operation: {Operation}.The operation name in the request URL is invalid. Verify the operation name.No
400OTSParameterInvalidCan not reserve read capacity unit on capacity.Reserved read or write throughput cannot be specified for tables in capacity instances.No
400OTSForbiddenUpdateCapacityUnitYour instance is forbidden to update capacity unit.Reserved read or write throughput cannot be updated for tables in capacity instances.No

API operation errors

These errors occur during Tablestore API operations. Most are caused by invalid parameters (HTTP 400) and are not retryable. Fix the request parameters based on the error message.

HTTP 500 errors

HTTP status codeError codeError messageDescriptionRetry
500OTSInternalServerErrorInternal server error.An internal error occurred. If the error persists after multiple retries, submit a ticket.Yes

HTTP 403 errors

HTTP status codeError codeError messageDescriptionRetry
403OTSQuotaExhaustedToo frequent table operations.The frequency of table operations exceeds the threshold. Wait and retry.Yes
403OTSQuotaExhaustedNumber of tables exceeded the quota.The maximum number of tables has been reached. Delete unused tables or request a quota increase.No

HTTP 400 errors: table and column validation

HTTP status codeError codeError messageDescriptionRetry
400OTSParameterInvalidInvalid instance name: {InstanceName}.The specified instance name is invalid.No
400OTSParameterInvalidInvalid table name: {TableName}.The specified table name is invalid.No
400OTSParameterInvalidInvalid column name: {ColumnName}.The specified column name is invalid.No
400OTSParameterInvalid{ColumnType} is an invalid type for the primary key.The primary key column type is invalid.No
400OTSParameterInvalid{ColumnType} is an invalid type for the attribute column.The attribute column type is invalid.No
400OTSParameterInvalidThe number of primary key columns must be in range: [1, {Limit}].The number of primary key columns is 0 or exceeds the limit.No
400OTSParameterInvalidValue of column {ColumnName} must be UTF8 encoding.The column values are not encoded in UTF-8.No
400OTSParameterInvalidThe length of attribute column: {ColumnName} exceeded the MaxLength:{MaxSize} with Current Length:{CellSize}.The attribute column name exceeds the maximum length.No
400OTSParameterInvalidDuplicated primary key name: '{PKName}'.Duplicate primary keys exist.No
400OTSParameterInvalidDuplicated attribute column name with primary key column: {ColumnName}.An attribute column name is the same as a primary key column name in the row.No
400OTSParameterInvalidThe number of attribute columns exceeds the limit, limit count:{Limit}, column count: {Count}.The number of attribute columns exceeds the limit.No
400OTSParameterInvalidThe length of primary key column: {ColumnName} exceeds the MaxLength: {Limit} with CurrentLength: {Current}.The primary key length exceeds the maximum.No
400OTSParameterInvalidNo name is given for primary key.No name is specified for the primary key column.No
400OTSParameterInvalidNo value is given for primary key name:{PkName}.No value is specified for the primary key column.No
400OTSParameterInvalidOpType cannot be given for primary key name :{PkName}.An operation type is specified for the primary key. You cannot specify an operation type for the primary key.No
400OTSParameterInvalidTimestamp cannot be given for primary key name:{PkName}.A timestamp is specified for the primary key. You cannot specify a timestamp for the primary key.No
400OTSParameterInvalidDuplicated primary key name: {PkName}.Duplicate primary keys exist.No
400OTSParameterInvalidNo name is given for attribute column.No attribute column name is specified.No
400OTSParameterInvalidNo value is given for column name.No attribute column value is specified.No
400OTSParameterInvalidAttribute column is missing.No attribute column is specified.No
400OTSParameterInvalidinvalid name of column: empty name.The attribute column name is empty.No
400OTSParameterInvalidInvalid column type, only STRING,INTEGER,BINARY is allowed.The column type is invalid. Primary key columns support only the STRING, INTEGER, and BINARY types.No
400OTSParameterInvalidInvalid column type: {ColumnType}.The column type is invalid.No
400OTSParameterInvaliddouble can not be used as primary key.The Double type cannot be used for primary keys.No
400OTSParameterInvalidColumn does not exist:{ColumnName}.The specified column does not exist.No
400OTSParameterInvalidThe number of columns from the request exceeds the limit, limit count: {Limit} , column count:{current}.The number of columns in the request exceeds the limit.No
400OTSParameterInvalidThe number of defined columns must be in range: [0, 32].The number of predefined columns exceeds 32.No
400OTSParameterInvalidPK column size not the same for all rows in table: {TableName}.Different rows have different numbers of primary key columns.No
400OTSInvalidPKPrimary key schema mismatch.The specified primary key does not match the primary key of the data table.No
400OTSOutOfRowSizeLimitThe total data size of columns in one row exceeded the limit.The total data size of all columns in the row exceeds the limit.No
400OTSOutOfColumnCountLimitThe number of columns in one row exceeded the limit.The number of columns in the row exceeds the limit.No

HTTP 400 errors: auto-increment primary key

HTTP status codeError codeError messageDescriptionRetry
400OTSParameterInvalidAUTO_INCREMENT primary key must be integer.Only INTEGER type columns can be set as auto-increment primary key columns.No
400OTSParameterInvalidAUTO_INCREMENT primary key count must <= 1.You can specify only one auto-increment primary key column.No
400OTSParameterInvalidFirst primary key can't be auto increment, table: {TableName}.The first primary key column cannot be an auto-increment primary key column.No
400OTSParameterInvalidPkAutoIncr cannot be set as first pk column.The auto-increment primary key column cannot be the first primary key column.No
400OTSParameterInvalidthe count of auto-incremental primary keys can not be more than 1.You can specify only one auto-increment primary key column.No
400OTSParameterInvalidAuto increment pk must be integer, name: {PkName}.The auto-increment primary key column is not of the INTEGER type.No
400OTSParameterInvalid{Count} pk auto increment exist in row.More than one auto-increment primary key column exists.No
400OTSParameterInvalidPKAutoIncr can't be used for read operations.You cannot specify the auto-increment primary key column attribute for read operations.No
400OTSParameterInvalidInvalid row to delete which with pk auto increment.You cannot specify the auto-increment primary key column attribute for delete operations.No
400OTSParameterInvalidInvalid expect:{RowExpect} when modify row with pk auto increment.The existence condition is invalid for the row with an auto-increment primary key column.No
400OTSParameterInvalidCan't set condition when modify row with pk auto increment.You cannot configure conditional update for rows with auto-increment primary key columns.No
400OTSParameterInvalidInvalid expect: {RowExpect} when modify a specific row for table with pk auto increment.The existence condition of the row to be modified in the table with an auto-increment primary key column is invalid.No

HTTP 400 errors: row operations (PutRow, UpdateRow, DeleteRow)

HTTP status codeError codeError messageDescriptionRetry
400OTSParameterInvalidOpType cannot be given for column name:{ColumnName} in PutRow.An operation type is specified for PutRow. You can specify an operation type only for UpdateRow.No
400OTSParameterInvalidColumn value cannot be given when type is DELETE_ONE_VERSION,DELETE_ALL_VERSION.Attribute column values cannot be specified for delete operations such as DELETE_ONE_VERSION or DELETE_ALL_VERSION.No
400OTSParameterInvalidTimestamp must be given when type is DELETE_ONE_VERSION.No version number is specified. To delete a version, specify a version number.No
400OTSParameterInvalidTimestamp cannot be given when type is DELETE_ALL_VERSION.A version number is specified. To delete all versions, do not specify a version number.No
400OTSParameterInvalidInvalid cell: {Cell}. missing timestamp.The timestamp is not specified.No
400OTSParameterInvalidInvalid cell timestamp: {Timestamp}. Expect: [0, Version::kMax.mVersion / kUsecPerMsec]..The specified timestamp is invalid.No
400OTSParameterInvalidInvalid timestamp. Cell:{CellName}.Data can be written only when the specified timestamp in milliseconds divided by 1000 is within the valid version range. The valid version range is calculated by using the following formula: Valid version range = [max{Data written time - Max version offset, Data written time - TTL value}, Data written time + Max version offset)No
400OTSParameterInvalidInvalid timestamp for cell: {Timestamp}. timestamp is inapplicable to DELETE_ALL_VERSION.A version is specified when DELETE_ALL_VERSION is used to delete all versions. Do not specify a version with DELETE_ALL_VERSION.No
400OTSParameterInvalidInvalid op type of cell: {OpType}.The operation type is invalid.No
400OTSParameterInvalidInvalid cell: {Cell}. Reason: missing value.The cell value is not specified.No
400OTSParameterInvalidInvalid request of delete row: missing RowDeleteMarker in request.RowDeleteMarker is not included in the delete request.No
400OTSParameterInvalidInvalid request of put/update row: unexpected RowDeleteMarker in request.RowDeleteMarker is included in PutRow or UpdateRow. Do not include RowDeleteMarker in PutRow or UpdateRow.No
400OTSParameterInvalidInvalid update row request: missing cells in request.The attribute column values are not specified in UpdateRow.No
400OTSParameterInvalidInvalid delete row request: unexpected cells in request.An attribute column value is specified in DeleteRow. Do not specify attribute column values in DeleteRow.No
400OTSParameterInvalidInvalid request of put row: find cells without values.The attribute column values are not specified in PutRow.No
400OTSParameterInvalidInvalid action: {Action}.The operation type is invalid.No
400OTSParameterInvalidInvalid row-existence expectation: {Expectation}.The row existence condition is invalid.No
400OTSParameterInvalidAttribute column cannot be given while reading data.Do not specify attribute column values for read operations.No
400OTSParameterInvalidDelete marker cannot be given.The operation does not support the DeleteMarker parameter. Only delete operations support DeleteMarker.No

HTTP 400 errors: batch operations (BatchGetRow, BatchWriteRow)

HTTP status codeError codeError messageDescriptionRetry
400OTSParameterInvalidNo row specified in the request of BatchGetRow.No row is specified for the BatchGetRow operation.No
400OTSParameterInvalidDuplicated table name: {TableName}.Tables with the same name are specified for the BatchGetRow or BatchWriteRow operation.No
400OTSParameterInvalidRows count exceeds the upper limit:{limit}.The number of rows exceeds the write limit for the table.No
400OTSParameterInvalidNo row is specified in BatchWriteRow.No row is specified for the BatchWriteRow operation. Specify at least one row.No
400OTSParameterInvalidNo operation is specified for table:{TableName}.No operation is specified for the table in the BatchWriteRow operation.No
400OTSParameterInvalidThe type of row in batch write operation is invalid.The row type in the BatchWriteRow operation is invalid.No
400OTSParameterInvalidThe modify type is invalid.The operation type in the BatchWriteRow operation is invalid. Only the PUT, UPDATE, and DELETE operation types are supported.No
400OTSParameterInvalidThe total data size of BatchWriteRow request exceeds the limit, limit size: {LimitSize}, data size:{UserSize}.The data size of the BatchWriteRow request exceeds the limit.No
400OTSParameterInvalidThe total data size of PutRow request exceeds the limit, limit size: {Limit} , data size: {Current}.The data size of the PutRow request exceeds the limit.No
400OTSParameterInvalidThe total data size of UpdateRow request exceeds the limit, limit size: {Limit} , data size: {Current}.The data size of the UpdateRow request exceeds the limit.No
400OTSParameterInvalidRepeated rows do not support row exist expectation check in BatchModify.Row existence check is not allowed for duplicate rows in BatchWriteRow.No
400OTSParameterInvalidRepeated rows do not support row condition check in BatchModify.Conditional update is not allowed for duplicate rows in BatchWriteRow.No
400OTSParameterInvalidDuplicate rows detected in MultiPut.Duplicate rows exist in MultiPut.No
400OTSParameterInvalidDuplicate rows detected in MultiGet.Duplicate rows exist in MultiGet.No

HTTP 400 errors: range query (GetRange)

HTTP status codeError codeError messageDescriptionRetry
400OTSParameterInvalidThe limit must be greater than 0.The limit value is less than or equal to 0. Set the limit to a value greater than 0.No
400OTSParameterInvalidStart and end time must be given at the same time.Specify both StartTime and EndTime together for the GetRange operation.No
400OTSParameterInvalidBegin key must less than end key in FORWARD.The start key must be less than the end key for forward queries.No
400OTSParameterInvalidBegin key must more than end key in BACKWARD.The start key must be greater than the end key for backward queries.No
400OTSParameterInvalidInvalid max scan size: {Limit}.The limit value for range query exceeds the threshold.No
400OTSParameterInvalidinvalid range, the begin's type is different from the end's,{BeginType}:{EndType}.The start key type differs from the end key type for range query.No

HTTP 400 errors: version and TTL

HTTP status codeError codeError messageDescriptionRetry
400OTSParameterInvalidTime-to-live is missing while creating table.TTL is not specified when creating the table.No
400OTSParameterInvalidMaxVersions is missing while creating table.No value is specified for the max versions parameter when creating the table.No
400OTSParameterInvalidTimeToLive cannot be 0 or less than -1.TTL cannot be 0 or less than -1. You can set TTL to -1.No
400OTSParameterInvalidThe maximum versions cannot be less than or equal to 0.The max versions value must be greater than 0.No
400OTSParameterInvalidTimestamp must be in range [0, INT64_MAX/1000).The timestamp must be greater than or equal to 0 and less than INT64_MAX/1000.No
400OTSParameterInvalidSpecific timestamp cannot be less than 0.The specified timestamp is less than 0.No
400OTSParameterInvalidThe maximum deviation must be in range [0, INT64_MAX/1000000].The max version offset value is out of range.No
400OTSParameterInvalidNo version condition is specified while querying row.No version condition is specified for the query.No
400OTSParameterInvalidSpecific tiemstamp and max versions cannot be given at the same time.A timestamp and the max versions parameter cannot be specified at the same time.No
400OTSParameterInvalidSpecific tiemstamp and time range cannot be given at the same time.A timestamp and a timestamp range cannot be specified at the same time.No
400OTSParameterInvalidSpecific timestamp, time range and max versions cannot be given at the same time.A timestamp, a timestamp range, and the max versions parameter cannot be specified at the same time. Specify only one.No
400OTSParameterInvalidInvalid max versions: {Version} . Reason: Max versions must be positive.The max versions value is invalid. The value must be greater than 0 or equal to -1.No
400OTSParameterInvalidDuplicated attribute column name with primary key column:{PkName}.The attribute column name is the same as the primary key column name.No

HTTP 400 errors: capacity unit

HTTP status codeError codeError messageDescriptionRetry
400OTSParameterInvalidThe value of read capacity unit can not be less than {Limit}.The read CU value is less than the lower limit.No
400OTSParameterInvalidThe value of write capacity unit can not be less then {Limit}.The write CU value is less than the lower limit.No
400OTSParameterInvalidInvalid Capacity Unit for UpdateTable: Either read({CU}) or write({CU}) should be non-negative.The read or write CU count is less than 0. Both values must be greater than or equal to 0.No
400OTSParameterInvalidInvalid Capacity Unit:{CU} . Capacity Unit must be nonnegative.The CU value is less than 0. The value must be greater than or equal to 0.No
400OTSParameterInvalidCan not reserve read capacity unit on hybrid storage cluster: {TableName}.Reserved read CUs cannot be specified for capacity instances.No
400OTSParameterInvalidCan not reserve write capacity unit on hybrid storage cluster: {TableName}.Reserved write CUs cannot be specified for capacity instances.No
400OTSParameterInvalidNo parameter is specified in table options.No parameter is specified in TableOption.No

HTTP 400 errors: filter

HTTP status codeError codeError messageDescriptionRetry
400OTSParameterInvalidDeserialize filter failed.Filter deserialization failed. The filter format encapsulated by the SDK is invalid.No
400OTSParameterInvalidOffset in ColumnPaginationFilter must be greater than or equal to 0.The ColumnPaginationFilter offset value is less than 0. Set the offset to 0 or greater.No
400OTSParameterInvalidLimit in ColumnPaginationFilter must be greater than 0.The ColumnPaginationFilter limit value is less than 0. Set the limit to 0 or greater.No
400OTSParameterInvalidDeserialize relation filter failed.Deserialization of the single column filter failed. The SDK filter format may be invalid.No
400OTSParameterInvalidDeserialize composite filter failed.Deserialization of the combined filter failed. The SDK filter format may be invalid.No
400OTSParameterInvalidDeserialize column pagination filter failed.Deserialization of the wide row filter failed. The SDK filter format may be invalid.No
400OTSParameterInvalidThe count of filter exceeds the max:{Limit}.The number of filters exceeds the limit.No
400OTSParameterInvalidInvalid offset of Filter: {Filter} . Reason: Offset must be nonnegative.The filter offset value is less than 0. Set the offset to 0 or greater.No
400OTSParameterInvalidInvalid relation operator: {Operation}.The relational operator is invalid.No
400OTSParameterInvalidInvalid type of filter: {Type}.The filter type is invalid.No
400OTSParameterInvalidInvalid NOT operator: the number of sub-filters must be 1.The NOT operator supports only one subfilter.No
400OTSParameterInvalidInvalid AND/OR operator: the number of sub-filters must be 2.The AND and OR operators require exactly two subfilters.No
400OTSParameterInvalidInvalid type of sub-filter: {Filter}.The subfilter type is invalid.No

HTTP 400 errors: return type and condition

HTTP status codeError codeError messageDescriptionRetry
400OTSParameterInvalidInvalid return type: {ReturnType}.The return type is invalid.No
400OTSParameterInvalidInvalid condition:{Condition}.The specified condition is invalid.No
400OTSParameterInvalidInvalid ModifyType:{ModifyType}.The update type is invalid.No

HTTP 400 errors: PlainBuffer encoding

HTTP status codeError codeError messageDescriptionRetry
400OTSParameterInvalidInput encoded PK broken, invalidate cell key type:xx.The primary key encoded in PlainBuffer format is invalid. The cell type is invalid.No
400OTSParameterInvalidInput encoded PK broken, length is shorter than expect.The primary key encoded in PlainBuffer format is invalid. The primary key length is less than expected.No
400OTSParameterInvaliddata format is invalid.The row data encoded in PlainBuffer format is invalid.No
400OTSParameterInvaliddata format is invalid, unknown variant type occured.The row data encoded in PlainBuffer format is invalid. The value type is invalid.No
400OTSParameterInvalidCell data broken, mismatch header, actual: {Header} , expect: {Header}.The row data encoded in PlainBuffer format is invalid due to a header mismatch.No
400OTSParameterInvalidCell data broken, PK value cannot be NULL, name: {PkName}.The row data encoded in PlainBuffer format is invalid. The primary key value for PkName is empty.No
400OTSParameterInvalidCell data broken, PK is empty.The row data encoded in PlainBuffer format is invalid. The primary key is not specified.No
400OTSParameterInvalidCell data broken, no PK follow PKTag.The row data encoded in PlainBuffer format is invalid. The primary key does not follow the primary key tag.No
400OTSParameterInvalidCell data broken, attr has no name.The row data encoded in PlainBuffer format is invalid. The attribute column name is not specified.No
400OTSParameterInvalidCell data broken, attr has no value, name:{Name}.The row data encoded in PlainBuffer format is invalid. The attribute column value is not specified.No
400OTSParameterInvalidCell data broken, no Cells follow CellTag.The row data encoded in PlainBuffer format is invalid. The cell content does not follow the cell tag.No
400OTSParameterInvalidCell data broken, no valid element in Cell, name: {Name}.The row data encoded in PlainBuffer format is invalid due to different cell formats.No
400OTSParameterInvalidCell data broken, cell is not end with checksum[{0x0A}]"] tag.The row data encoded in PlainBuffer format is invalid. The cell does not end with CheckSumFlag after encoding.No
400OTSParameterInvalidCell data broken, row is not end with checksum tag.The row data encoded in PlainBuffer format is invalid. The row data does not end with CheckSumTag after encoding.No
400OTSParameterInvalidCell data broken, mismatch tag, actual tag({TAG}), expect({TAG}).The row data encoded in PlainBuffer format is invalid. The specified tag does not exist.No
400OTSParameterInvalidCell data broken, wrong string format, size: {Size}.The row data encoded in PlainBuffer format is invalid. The string encoding format is invalid.No
400OTSParameterInvalidCell data broken, checksum is mismatch, {UserChecksum} :{ServiceChecksum} :The row data encoded in PlainBuffer format is invalid. The UserChecksum value differs from the ServiceChecksum value calculated by the server.No
400OTSParameterInvalidCell data broken, has more data in cell, but they can't be parsed.The column data encoded in PlainBuffer format is invalid due to excess data.No
400OTSParameterInvalidInvalid row: missing checksum.The row data encoded in PlainBuffer format is invalid. The row checksum value is not specified.No
400OTSParameterInvalidInvalid Column({ColumnName}): missing checksum.The column data encoded in PlainBuffer format is invalid. The cell checksum value is not specified.No
400OTSParameterInvalidParse PBMessage from RawString failed.Protobuf deserialization failed. The SDK serialization code may be invalid.No
400OTSParameterInvalidCannot deserialize the request data.Request data deserialization failed due to an empty value or invalid format.No
400OTSParameterInvalidUnknown or unsupported CellType in primary key: {PkName}.The cell type of the primary key is unrecognized.No
400OTSParameterInvalidInvalid boolean real value, value length: {Length}.The column data encoded in PlainBuffer format is invalid. The Boolean value length is invalid.No
400OTSParameterInvalidNaN can't be set to double value.The value of a Double type column is set to NaN.No
400OTSParameterInvalidInfinity can't be set to double value.The value of a Double type column is set to Infinity.No

HTTP 400 errors: search index and advanced features

HTTP status codeError codeError messageDescriptionRetry
400OTSParameterInvalidCan't write index table directly.Write operations cannot be performed on index tables.No
400OTSParameterInvalidTry to call method using explicit transaction on explicit-transaction-disabled table.Local transaction is disabled for the table.No
400OTSParameterInvalidTable[tablename] who has at least one search index cannot be deleted.Tables with search indexes cannot be deleted. Delete the search indexes first.No
400OTSParameterInvalidnested field aggregation/groupby must not be recursive.Recursive GroupBy or aggregation cannot be used in nested fields.No
400OTSParameterInvalidfailed to query index, please check if 'Index' is enabled for query fields.Indexing is disabled for the query field. Enable indexing for the field.No
400OTSParameterInvalid[table ttl] must be bigger than or equal search index ttl, but table ttl is xxxx and search index ttl is [{IndexName}:xxxx]The data table TTL is smaller than the search index TTL. The data table TTL must be greater than or equal to the search index TTL.No
400OTSParameterInvalidthe number of index in creating has exceed the instance quota, limit: 10The total number of search indexes being created and indexes undergoing dynamic schema modification cannot exceed 10. Wait until synchronization completes and try again.No
400OTSParameterInvalidcan't delete analytical store with sql bindingThe analytical store used in a mapping table cannot be deleted. Delete the mapping table first.No

HTTP 400 errors: stream

HTTP status codeError codeError messageDescriptionRetry
400OTSTunnelServerUnavailableOTSTrimmedDataAccess Requested stream data is already trimmed or does not exist.Stream logs have expired and data has not been pulled for a long period.No

Tablestore server errors

These errors originate from Tablestore server-side operations. Errors with HTTP status code 503, 409 (OTSRowOperationConflict), and 404 (OTSTableNotReady) are transient and can be retried with exponential backoff.

HTTP 503 errors (transient)

HTTP status codeError codeError messageDescriptionRetry
503OTSServerBusyServer is busy.An internal Tablestore server is busy. Try again later.Yes
503OTSPartitionUnavailableThe partition is not available.The partition is being loaded. Try again later.Yes
503OTSTimeoutOperation timeout.An internal Tablestore operation timed out.Yes
503OTSServerUnavailableServer is not available.An internal Tablestore server is inaccessible.Yes

HTTP 409 errors (conflict)

HTTP status codeError codeError messageDescriptionRetry
409OTSRowOperationConflictData is being modified by the other request.Concurrent write requests to the same row caused a conflict. Retry the request.Yes
409OTSObjectAlreadyExistRequested table already exists.The data table or index table that you want to create already exists.No

HTTP 404 errors (not found)

HTTP status codeError codeError messageDescriptionRetry
404OTSObjectNotExistRequested table does not exist.The requested table does not exist. Verify the table name.No
404OTSTableNotReadyThe table is not ready.The table is being initialized. Wait a few seconds and try again.Yes

HTTP 403 errors (forbidden)

HTTP status codeError codeError messageDescriptionRetry
403OTSTooFrequentReserved ThroughputAdjustmentCapacity unit adjustment is too frequent.The read/write CUs are adjusted too frequently. Wait before adjusting again.Yes
403OTSCapacityUnitExhaustedCapacity unit is not enough.The read/write CUs for the partition are exhausted.No
403OTSConditionCheckFailCondition check failed.Condition check failed. Verify the row existence condition or column condition.No

HTTP 429 errors (throttling)

HTTP status codeError codeError messageDescriptionRetry
429OTSFlowControlThe requests have been throttled.Analyze this error based on the actual scenario. Submit a ticket to contact Tablestore technical support for troubleshooting.No

Common error handling patterns

When handling Tablestore errors in your application, follow these guidelines:

  • Implement exponential backoff for retryable errors. For errors marked as retryable (such as OTSServerBusy, OTSPartitionUnavailable, OTSTimeout, OTSServerUnavailable, OTSRowOperationConflict, and OTSTableNotReady), retry the request with exponential backoff. Start with a short delay (for example, 100 ms) and double the delay for each subsequent retry, up to a maximum delay.

  • Handle batch operation partial failures. BatchGetRow and BatchWriteRow operations may partially succeed. Always check the response for per-row error information, even when the HTTP response returns 200.

  • Distinguish client errors from server errors. HTTP 4xx errors (400, 403, 404, 405, 408, 413, 429) indicate client-side issues. Fix the request before retrying. HTTP 5xx errors (500, 503) indicate server-side issues and are typically transient.

  • Log error details for debugging. Include the error code, error message, HTTP status code, and request ID in your error logs to help troubleshooting when you need to submit a ticket.