MOT错误消息
错误可能由多种场景引起。所有错误都记录在数据库服务器日志文件中。此外,与用户相关的错误作为对查询、事务或存储过程执行或数据库管理操作的响应的一部分返回给用户。
- 服务器日志中报告的错误包括函数、实体、上下文、错误消息、错误描述和严重性。
- 向用户报告的错误被翻译成标准PostgreSQL错误码,可能由MOT特定的消息和描述组成。
错误提示、错误描述和错误码见下文。该错误码实际上是内部代码,不记录也不返回给用户。
写入日志文件的错误
所有错误都记录在数据库服务器日志文件中。以下列出了写入数据库服务器日志文件但未返回给用户的错误。该日志位于data文件夹中,命名为postgresql-DATE-TIME.log。
表 1 只写入日志文件的错误
| 日志消息 | 内部错误代码 |
|---|---|
| Error code denoting success | MOT_NO_ERROR 0 |
| Out of memory | MOT_ERROR_OOM 1 |
| Invalid configuration | MOT_ERROR_INVALID_CFG 2 |
| Invalid argument passed to function | MOT_ERROR_INVALID_ARG 3 |
| System call failed | MOT_ERROR_SYSTEM_FAILURE 4 |
| Resource limit reached | MOT_ERROR_RESOURCE_LIMIT 5 |
| Internal logic error | MOT_ERROR_INTERNAL 6 |
| Resource unavailable | MOT_ERROR_RESOURCE_UNAVAILABLE 7 |
| Unique violation | MOT_ERROR_UNIQUE_VIOLATION 8 |
| Invalid memory allocation size | MOT_ERROR_INVALID_MEMORY_SIZE 9 |
| Index out of range | MOT_ERROR_INDEX_OUT_OF_RANGE 10 |
| Error code unknown | MOT_ERROR_INVALID_STATE 11 |
返回给用户的错误
下面列出了写入数据库服务器日志文件并返回给用户的错误。
MOT使用返回码(Return Code,RC)返回Postgres标准错误代码至封装。某些RC会导致向正在与数据库交互的用户生成错误消息。
MOT从内部返回Postgres代码(见下文)到数据库包,数据库封装根据标准的Postgres行为对其做出反应。
说明: 提示信息中的%s、%u、%lu指代相应的错误信息(如查询、表名或其他信息)。
- %s:字符串
- %u:数字
- %lu:数字
表 2 返回给用户并记录到日志文件的错误
| 返回给用户的短/长描述 | Postgres代码 | 内部错误码 |
|---|---|---|
| Success. Denotes success | ERRCODESUCCESSFUL COMPLETION | RCOK = 0 |
| Failure Unknown error has occurred. | ERRCODE_FDW_ERROR | RC_ERROR = 1 |
| Unknown error has occurred. Denotes aborted operation. | ERRCODE_FDW_ERROR | RC_ABORT |
| Column definition of %s is not supported. Column type %s is not supported yet. | ERRCODE_INVALID_COLUMN_DEFINITION | RC_UNSUPPORTED_COL_TYPE |
| Column definition of %s is not supported. Column type Array of %s is not supported yet. | ERRCODE_INVALID_COLUMN_DEFINITION | RC_UNSUPPORTED_COL_TYPE_ARR |
| Column size %d exceeds max tuple size %u. Column definition of %s is not supported. | ERRCODE_FEATURE_NOT_SUPPORTED | RC_EXCEEDS_MAX_ROW_SIZE |
| Column name %s exceeds max name size %u. Column definition of %s is not supported. | ERRCODE_INVALID_COLUMN_DEFINITION | RC_COL_NAME_EXCEEDS_MAX_SIZE |
| Column size %d exceeds max size %u. Column definition of %s is not supported. | ERRCODE_INVALID_COLUMN_DEFINITION | RC_COL_SIZE_INVLALID |
| Cannot create table. Cannot add column %s; as the number of declared columns exceeds the maximum declared columns. | ERRCODE_FEATURE_NOT SUPPORTED | RCTABLE_EXCEEDS_MAX DECLAREDCOLS |
| Cannot create index. Total column size is greater than maximum index size %u. | ERRCODE_FDW_KEY_SIZE EXCEEDSMAX_ALLOWED | RC_INDEX_EXCEEDS_MAX_SIZE |
| Cannot create index. Total number of indexes for table %s is greater than the maximum number of indexes allowed %u. | ERRCODE_FDW_TOO_MANY INDEXES | RCTABLE_EXCEEDS_MAX_INDEXES |
| Cannot execute statement. Maximum number of DDLs per transaction reached the maximum %u. | ERRCODE_FDW_TOO_MANY DDLCHANGES_IN TRANSACTIONNOT ALLOWED | RCTXN_EXCEEDS_MAX_DDLS |
| Unique constraint violation Duplicate key value violates unique constraint \”%s\””. Key %s already exists. | ERRCODE_UNIQUE VIOLATION | RCUNIQUE_VIOLATION |
| Table \”%s\” does not exist. | ERRCODE_UNDEFINED_TABLE | RC_TABLE_NOT_FOUND |
| Index \”%s\” does not exist. | ERRCODE_UNDEFINED_TABLE | RC_INDEX_NOT_FOUND |
| Unknown error has occurred. | ERRCODE_FDW_ERROR | RC_LOCAL_ROW_FOUND |
| Unknown error has occurred. | ERRCODE_FDW_ERROR | RC_LOCAL_ROW_NOT_FOUND |
| Unknown error has occurred. | ERRCODE_FDW_ERROR | RC_LOCAL_ROW_DELETED |
| Unknown error has occurred. | ERRCODE_FDW_ERROR | RC_INSERT_ON_EXIST |
| Unknown error has occurred. | ERRCODE_FDW_ERROR | RC_INDEX_RETRY_INSERT |
| Unknown error has occurred. | ERRCODE_FDW_ERROR | RC_INDEX_DELETE |
| Unknown error has occurred. | ERRCODE_FDW_ERROR | RC_LOCAL_ROW_NOT_VISIBLE |
| Memory is temporarily unavailable. | ERRCODE_OUT_OF_LOGICAL_MEMORY | RC_MEMORY_ALLOCATION_ERROR |
| Unknown error has occurred. | ERRCODE_FDW_ERROR | RC_ILLEGAL_ROW_STATE |
| Null constraint violated. NULL value cannot be inserted into non-null column %s at table %s. | ERRCODE_FDW_ERROR | RC_NULL_VIOLATION |
| Critical error. Critical error: %s. | ERRCODE_FDW_ERROR | RC_PANIC |
| A checkpoint is in progress – cannot truncate table. | ERRCODE_FDW_OPERATION_NOT_SUPPORTED | RC_NA |
| Unknown error has occurred. | ERRCODE_FDW_ERROR | RC_MAX_VALUE |
| <recovery message> | - | ERRCODE_CONFIG_FILE_ERROR |
| <recovery message> | - | ERRCODE_INVALID_TABLE DEFINITION |
| Memory engine – Failed to perform commit prepared. | - | ERRCODEINVALID_TRANSACTION STATE |
| Invalid option <option name> | - | ERRCODEFDW_INVALID_OPTION NAME |
| Invalid memory allocation request size. | - | ERRCODEINVALID_PARAMETER VALUE |
| Memory is temporarily unavailable. | - | ERRCODEOUT_OF_LOGICAL MEMORY |
| Could not serialize access due to concurrent update. | - | ERRCODET_R_SERIALIZATION FAILURE |
| Alter table operation is not supported for memory table. Cannot create MOT tables while incremental checkpoint is enabled. Re-index is not supported for memory tables. | - | ERRCODEFDW_OPERATION_NOT SUPPORTED |
| Allocation of table metadata failed. | - | ERRCODEOUT_OF_MEMORY |
| Database with OID %u does not exist. | - | ERRCODE_UNDEFINED_DATABASE |
| Value exceeds maximum precision: %d. | - | ERRCODE_NUMERIC_VALUE_OUT OFRANGE |
| You have reached a maximum logical capacity %lu of allowed %lu. | - | ERRCODE_OUT_OF_LOGICAL MEMORY |
说明: 提示信息中的%s、%u、%lu指代相应的错误信息(如查询、表名或其他信息)。