Mybatis 一个函数 执行多句 SQL代码报错解决

在URL后面添加:allowMultiQueries=true

xxxxxUrl=jdbc:mysql://xx.yy.zz:3306/ccccccc?characterEncoding=utf-8&=false&allowMultiQueries=true

### SQL `EXTRACT` 函数报错的原因分析 在 MySQL 中,如果遇到 `FUNCTION xxxx.EXTRACT does not exist` 的错误提示,则可能是由于以下几个原因引起的: 1. **MySQL 版本问题** 如果正在使用的 MySQL 数据库版本较低,可能会导致某些函数不可用。例如,在早期的 MySQL 版本中并未引入 JSON 处理功能以及相关的提取函数[^1]。 2. **语法混淆** 需要注意的是,MySQL 提供了一个名为 `JSON_EXTRACT()` 的函数用于从 JSON 字符串中提取数据,而并非直接存在一个叫作 `EXTRACT` 的通用 JSON 函数。如果是尝试调用 `EXTRACT` 来解析 JSON 数据,那么应该改用 `JSON_EXTRACT()` 函数[^3]。 3. **输入参数异常** 当使用 `JSON_EXTRACT()` 其他类似的函数时,若传递给它的值不是合法的 JSON 格式(比如空字符串其他非法字符),同样会引发运行时错误。 4. **框架层面上的问题** 若是在 MyBatis MyBatis-Plus 这样的 ORM 框架下操作数据库并遇到了上述情况,除了确认原始 SQL 正确无误之外,还需要检查映射配置文件者动态生成部分是否有潜在缺陷[^2]。 #### 解决方案 以下是针对不同场景下的具体解决办法: - **升级 MySQL 到最新稳定版** 对于因版本过低而导致的功能缺失状况,最彻底的办法就是更新至支持所需特性的更高版本 MySQL 实例。 - **修正目标函数名** 将原先试图运用却不存在的伪方法替换为实际存在的对应实现方式。例如把错误表述成 “extract from json”的地方改成标准写法如下所示: ```sql SELECT JSON_EXTRACT(json_column_name, '$.key') AS extracted_value FROM table_name; ``` - **验证输入合法性** 在构建查询之前先预处理好待检索的数据源,确保它们均满足预期格式要求再提交到服务器端执行。可以借助编程语言中的正则表达式者其他工具来完成这项任务。 - **排查持久化逻辑漏洞** 假设是由第三方类库引起冲突的话,则需仔细阅读官方文档了解其内部工作机制原理,并按照推荐的最佳实践调整现有代码结构以便兼容底层驱动程序接口变化需求。 ```php // PHP 示例:正确设置mysqli对象作为第一个参数 $connection = new mysqli($host, $username, $password); if (!$connection->select_db($database)) { echo 'Select DB Error: ' . $connection->error; } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值