Error number: 3154; Symbol: ER_JSON_BAD_ONE_OR_ALL_ARG; SQLSTATE: 42000
Message: The oneOrAll argument to %s may take these values: ‘one’ or ‘all’.
错误说明
ER_JSON_BAD_ONE_OR_ALL_ARG 为MySQL的错误码之一。它表示MySQL在执行JSON函数时发生错误,表明调用函数的参数不正确或者部分参数不正确或者不正确的类型。该错误一般出现在使用JSON函数时期望一个参数而传入了多个参数,或者调用该函数传入的参数不正确,或者传入了无效的参数类型。
常见案例
这个错误可能出现在使用JSON函数时发生错误,例如当调用JSON_EXTRACT()函数时传入非标量(如JSON字符串)的参数。例如:
mysql> SELECT JSON_EXTRACT(JSON_OBJECT(‘a’, ‘b’), ‘a’, ‘b’);
ERROR 3154 (42000): ER_JSON_BAD_ONE_OR_ALL_ARG: JSON function ‘json_extract()’ expects either one or all arguments to be scalar.
此外,调用JSON函数时传入多于期望的参数,也会引发该错误,例如:
mysql> SELECT JSON_EXTRACT(JSON_OBJECT(‘a’, ‘b’), ‘a’, ‘b’, ‘c’);
ERROR 3154 (42000): ER_JSON_BAD_ONE_OR_ALL_ARG: JSON function ‘json_extract()’ expects either one or all arguments to be scalar.
解决方法
该错误可以通过检查函数的调用参数的个数以及类型,以确保所有调用参数正确无误来解决。同时,还需要确保传入的参数是标量,而不是JSON对象或字符串等非标量值。同时,也需要确保正确的参数被传入,确保不传入多余的参数。