MySQL Error number: 3904; Symbol: ER_JSON_VALUE_OUT_OF_RANGE_FOR_FUNC_INDEX; SQLSTATE: 22003 报错 故障修复 远程处理
文档解释
Error number: 3904; Symbol: ER_JSON_VALUE_OUT_OF_RANGE_FOR_FUNC_INDEX; SQLSTATE: 22003
Message: Out of range JSON value for CAST for functional index ‘%s’.
错误说明:
ER_JSON_VALUE_OUT_OF_RANGE_FOR_FUNC_INDEX 错误属于MySQL服务器预定义错误之一,号码为 3904,与SQLSTATE错误状态码 22003。该错误指明当用户提供的JSON值超出了允许的范围,以便在表的一列上创建索引时报错。这一般会发生在使用ALTER TABLE语句时,使用FUNCTION_CREATE_JSON_INDEX索引类型时。
常见案例
ER_JSON_VALUE_OUT_OF_RANGE_FOR_FUNC_INDEX 错误可能因为JSON字段本身的值太大或者太小而造成,或者因为数据表中已存在的索引类型不兼容JSON。
例1:假设用户想将一个包含整数的字段标记为UNSIGNED INT类型,其值超出此范围。
例2:假设用户想要使用JSON_VALUE()函数并用索引去访问一个巨大的值,但JSON值超出了范围,或者索引类型与JSON类型不兼容。
解决方法:
1.首先确定此变量的最大值或最小值并调整JSON值以符合该限制。
2.在创建索引前,确保变量的类型与JSON结合使用,而不会导致类型不匹配错误。
3.确定JSON值是否超出MySQL可处理的最大值,并尝试减少超出的内容。
4.如果向一个字段添加UNSIGNED INT索引时出现该错误,尝试更改字段类型并使用支持UNSIGNED INT索引类型。
5.各种不支持在FUNCTION_CREATE_JSON_INDEX上创建索引的JSON值,例如JSON_ARRAY(),JSON_OBJECT(),JSON_MERGE()等,必须被删除,才能正确索引。