使用Lindorm SQL访问宽表引擎或时序引擎遇到异常时,系统会以错误码的形式将异常或程序错误返回给开发人员。您可以在本文的表格中搜索报错返回的错误编号,快速查找具体的错误信息及处理建议。
常见错误
下表中的错误码与MySQL中的部分服务端错误码兼容,您可以依据开发MySQL应用的经验对它们进行异常处理。如果有无法处理的错误,请联系Lindorm技术支持(钉钉号:s0s3eg3)。
其中,SQLSTATE是SQL92标准中定义的SQL级别错误的分类规范,用于在应用程序中进行分类异常处理。
错误码 | SQLSTATE | 错误消息格式 | 处理建议 |
1005 | HY000 | Can't create table '%s' | 无法创建表,请根据错误消息检查建表语句的用法是否正确。 |
1006 | HY000 | Can't create database '%s' (errno: %d - %s) | 无法创建Database, 请根据错误消息,检查输入的参数是否正确。 |
1007 | HY000 | Can't create database '%s'; database exists | 该Database已存在,请使用其他名称创建。 |
1008 | HY000 | Can't drop database '%s'; database doesn't exist | 该Database不存在,无法进行删除,请提供正确的Database名称。 |
1009 | HY000 | Error dropping database (can't delete '%s', errno: %d - %s) | 删除Database失败,请从错误消息中获取失败原因。 若依然无法解决,请联系Lindorm技术支持寻求解决方法。 |
1030 | HY000 | Got error %s from storage engine: %s | 存储引擎无法归类的错误。请将占位符中的错误信息留存并联系Lindorm技术支持寻求解决方法。 |
1040 | 08004 | Too many connections (current limit: %d) | 单个节点上的连接数过多(默认连接数上限:1000)。可以尝试重新创建连接,但若实例的每个节点连接数都达到上限时,建议优先重新审视业务代码中对于连接的使用方式。 若仍然无法解决,请联系Lindorm技术支持寻求解决方法。 |
1045 | 28000 | Access denied for '%s' | 认证失败。请确认所用用户的认证信息是否存在记忆错误,笔误等情况并输入正确的认证信息。 |
1043 | 28000 | Bad handshake: %s | 尝试建立 MySQL协议的连接时,连接的初始化阶段失败。建议根据消息中的详细信息尝试排查。 若仍然无法解决,请联系Lindorm技术支持寻求解决方法。 |
1046 | 3D000 | No database selected | 连接操作中未指定任何一个Database。重新审视连接设置并显式指定一个Database。 |
1049 | 42000 | Unknown database '%s' | 未知Database,请指定需要访问的Database。 |
1050 | 42S01 | Table '%s' already exists | 该表已经存在,请使用其他表名称。 |
1054 | 42S22 | Unknown column '%s' | 操作了一个无法被识别的列名。请确认SQL中显式指定的列名是否都是实际存在的。 |
1060 | 42S21 | Duplicate column name '%s' | 语句中指定了重复的列名。请确认SQL中显式指定的列名存在重复。 |
1064 | 42000 | You have an error in your SQL syntax; %s | SQL语句中存在语法错误,请参考SQL语法文档进行校正。SQL语法文档,请参见SQL参考。 |
1082 | 42S12 | Table '%s' has no index like the one used in CREATE INDEX; recreate the table | 表中不存在与CREATE INDEX中索引类似的索引,建议重新创建表。 |
1146 | 42S02 | Table '%s.%s' doesn't exist | 该表不存在,请检查是否输入的名称有误。 |
1170 | 42000 | BINARY/CHAR column '%s' used in column specification without a key length | 指定部分数据类型时没有指定长度,请重新审视建表语句为类似BINARY/CHAR这样的类型显式指定长度。 |
1211 | 42000 | '%s'@'%s' is not allowed to create new users; %s | 当前操作的用户没有创建新用户的权限。请先为当前用户申请足够的权限。 |
1227 | 42501 | Access denied: %s | 确认所使用用户的真实权限,确保对访问对象拥有足够的权限。 |
1243 | HY000 | Unknown prepared statement id (%d) | 找不到所需的预准备语句。该异常有可能发生在先准备语句,再绑定动态参数的执行模式下。建议重新准备一下语句。 若依然无法解决,请联系Lindorm技术支持寻求解决方法。 |
1251 | 08004 | Client does not support authentication protocol requested by server; consider upgrading MySQL client | 基于MySQL协议连接Lindorm时,所用客户端的驱动不支持服务端所需的用户认证方法。建议参考Lindorm的MySQL协议兼容文档,显式指定支持的认证方法,或者升级所用的客户端驱动。 |
1295 | HY000 | This command is not supported in the prepared statement protocol yet | 不支持预准备语句时同时指定多条语句,建议修改预准备语句的指定方式。 |
1461 | 42000 | 在单一节点上同时预准备的语句数超过上限(默认上限:10000)。建议重新审视业务应用,修改SQL语句的预准备逻辑,避免同时准备过多语句。 | |
1470 | HY000 | String '%s' is too long for %s (should be no longer than %d) | 指定的对象名称过长。 建议根据错误消息中提示的长度修改创建数据对象时指定的名称。 |
1815 | HY000 | Internal error: %s | 无法归类的内部异常。 请联系Lindorm技术支持寻求解决方法。 |
扩展错误
下表中的错误是Lindorm扩展出的一些异常场景,您可以根据下述处理建议并结合相应的SQLSTATE含义在业务代码中进行处理。如果有无法处理的错误,请联系Lindorm技术支持(钉钉号:s0s3eg3)。
错误码 | SQLSTATE | 错误消息格式 | 处理建议 |
1973 | 42000 | Can't create user '%s'; it already exists | 正在尝试创建一个已存在的用户。建议重新检查已有用户。 |
1974 | 42000 | Can't drop user '%s'; it doesn't exist | 正在尝试删除一个不存在的用户。建议重新检查已有用户。 |
1975 | 42000 | Can't alter user '%s'; it doesn't exist | 正在尝试修改一个不存在的用户。建议重新检查已有用户。 |
1976 | 42000 | Can't alter user '%s'; %s | 无法执行修改指定的用户。建议按照错误消息所指示的内容进行排查。 若仍然无法解决,请联系Lindorm技术支持寻求解决方法。 |
3002 | 42L01 | Inconsistent usage of database '%s' and '%s' | 当前操作的目标Database与当前连接的Database不一致。 建议修改相关连接属性或者使用USE语句切换当前使用的Database。 |
3024 | HY000 | Query execution was interrupted, maximum statement execution time exceeded | 查询超时,请重试。 若重试依然超时,请联系Lindorm技术支持寻求解决方法。 |
3025 | HY000 | Query execution was canceled | 当前获取结果中的查询已在别处被中止。 建议重试查询操作。 |
3163 | HY000 | %s | 用户已存在。建议重新检查已有用户。 |
8000 | HY000 | Can't alter database '%s' (errno: %d - %s) | 无法修改Database,请根据错误消息,检查输入的参数是否有误。 |
8001 | HY000 | Can't create continuous query '%s' (errno: %d - %s) | 无法创建连续查询(continuous query),请根据错误消息,检查输入的参数是否有误。 |
8002 | HY000 | Can't create continuous query '%s'; continuous query exists | 该连续查询(continuous query)已经存在,请使用其他名称进行创建。 |
8004 | HY000 | Continuous query '%s.%s' doesn't exist | 该连续查询(continuous query)不存在,请检查输入的名称是否有误。 |
8005 | HY000 | Table '%s' not found | 表不存在,请检查表的名称是否有误。 |
8006 | HY000 | Query failed; %s | 查询失败,请根据错误消息分析错误原因。 若依然无法解决,请联系Lindorm技术支持寻求解决方法。 |
8007 | HY000 | Insert failed; %s | 写入失败,请根据错误消息分析错误原因。 若依然无法解决,请联系Lindorm技术支持寻求解决方法。 |
8008 | HY000 | Quota exceeded; %s | 超出资源限制,请根据错误消息提示处理。 如果操作是数据查询,请缩小查询时间范围,或者增加WHERE条件,减少查询命中的数据量。 如果操作是数据写入,请限制写入TPS。 |
8009 | HY000 | Can't drop predownsample; %s | 无法删除指定的预降采样,请根据错误消息分析错误原因。 若依然无法解决,请联系Lindorm技术支持寻求解决方法。 |
8010 | HY000 | Can't show predownsample; %s | 无法查看指定的预降采样,请根据错误消息分析错误原因。 若依然无法解决,请联系Lindorm技术支持寻求解决方法。 |
8011 | 42000 | Unknown data type: %s | 无法识别的数据类型。 数据读写过程中的实际数据类型与预期数据类型存在冲突。 建议根据错误消息中的具体原因进行处理。 若依然无法解决,请联系Lindorm技术支持寻求解决方法。 |
8012 | 42000 | Illegal operation: %s | SQL语句的用法错误, 或者是随语句输入的相关数据存在问题。建议对照语法手册的文档重新审视指定的 SQL 语句。 |
8013 | 42000 | Cannot grant privilege '%s' to: %s; %s | GRANT权限失败。请根据错误消息分析错误原因。 |
8014 | 42000 | Cannot revoke privilege '%s' to: %s; %s | REVOKE权限失败。请根据错误消息分析错误原因。 |
8015 | HY000 | Failed to alter parameter; %s | 修改系统配置失败。请根据错误消息分析错误原因。 |
8016 | HY000 | Failed to show parameter; %s | 展示系统配置失败。请根据错误消息分析错误原因。 |
8017 | 42611 | Column name "%s" conflicts with a system column name | DDL中指定的列名与系统隐藏列重名。建议根据错误消息中的具体原因进行列名改名。 |
8018 | 42000 | DECIMAL column '%s' type should be specified with precision and scale | DDL中指定DECIMAL数据类型时需要指定Precision和Scale。 建议对照语法手册的文档重新审视指定的SQL语句。 |
8100 | 08003 | The connection does not exist; %s | 尝试复用的连接会话已经被服务端释放。 建议重建连接。 |
9000 | HY000 | Server internal error; %s | 请联系Lindorm技术支持寻求解决方法。 |
9001 | 0A000 | UNSUPPORTED: %s | 不支持该语法。请对照SQL语法文档,避免使用尚不支持的SQL语法。 |
9002 | HY000 | Function %s can only be used in domain-specific dialect (Time-series, etc.) | 指定的函数不是一个通用函数,只能用于特定方言中(如面向时序引擎的方言)。 建议对照语法手册的文档重新审视指定的SQL语句。 |
9003 | 28000 | The authentication method %s cannot apply to the old-fashion user, please consider to use another method. | 建立连接时使用的认证方法无法适用于在旧版本引擎上创建的用户。 详情说明,请参见MySQL协议开发说明中的注意事项。 建议参考Lindorm的MySQL协议兼容文档,显式指定支持的认证方法,或升级所用的客户端驱动。 |
9004 | 08004 | The authentication method %s not available for the current deployment, please consider to use another method. | 建立连接时使用的认证方法在当前实例的部署形态上无法使用。 建议参考Lindorm的MySQL协议兼容文档,显式指定支持的认证方法,或升级所用的客户端驱动 |
9006 | HY000 | Analytical processing error; %s | 分析型查询执行错误。 请将占位符中的错误信息留存并联系Lindorm技术支持寻求解决方法。 |
9010 | XX000 | The storage engine request illegal: %s | 存储引擎内部通信请求非法。 请将占位符中的错误信息留存并联系Lindorm技术支持寻求解决方法。 |
9011 | HY000 | Database protocol error: %s | MySQL协议报文错误。 请将占位符中的错误信息留存并联系Lindorm技术支持寻求解决方法。 |