mysql - 无法确定正确的调用签名 - mysql 中不同模式的相同存储过程
问题描述
我已经使用 mysql 创建了存储过程,并且我正在使用 SimpleJdbcCall 从 spring mvc 代码中调用存储过程。
Spring框架版本:5.2.1
下面是我的数据库结构
MYSQL 数据库
schema1 -> 存储过程 A
schema2 -> 存储过程 A
两种模式几乎相同(但表更改很少),因此我们在两种模式下都创建了相同的存储过程。下面是例外
org.springframework.dao.InvalidDataAccessApiUsageException: Unable to determine the correct call signature - multiple procedures/functions/signatures for 'Transfer_Stocks': found [schema1.null.Transfer_Stocks, schema2.null.Transfer_Stocks]
如果我在两个模式上都有存储过程,则会出现问题,虽然数据源仅指向 spring mvc 中的 schema1,但 SimpleJdbcCall 似乎也在寻找其他模式,因为在上述异常中我可以看到所有模式都被列出 ([schema1. null.Transfer_Stocks,schema2.null.Transfer_Stocks])。
春天mvc代码
@Override
@Transactional
public int transferStocks(List<ProductStocks> stocksList) throws Exception{
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd").create();
String json = gson.toJson(stocksList);
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(template.getDataSource()).withProcedureName("Transfer_Stocks");
SqlParameterSource in = new MapSqlParameterSource().addValue("stksArr", json);
Map<String, Object> out = jdbcCall.execute(in);
return (Integer) out.get("result");
}
我也试过 .withCatlogName("schema1")。但问题仍然存在。我在某个地方出错了吗?请指导我。
Mysql 连接器
<tx:annotation-driven proxy-target-class="true" transaction-manager="transactionManager" />
<!-- erpho -->
<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://<ip>:3306/schema1?useSSL=false"></property>
<property name="username" value="*****"></property>
<property name="password" value="***"></property>
</bean>
解决方案
推荐阅读
- excel - 如何单击 Chrome 上的按钮将值粘贴到输入框中?
- python - 从工作簿处理到另一个工作簿时更改日期格式
- python - 如何测试数据帧最后一行中的特定值(使用-1)
- java - 创建名为 'org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator#0 的 bean 时出错?
- node.js - 如何在 SailsJS 中创建(并能够更改)全局变量
- java - 从java字符串数组中获取不同的元素
- c++ - 如何编写一个函数来计算 C++ 中的最近点?
- multithreading - 缓存一致性和内存屏障之间有什么关系?
- python - 使用 Spark DataFrames 对多个字符串分类特征进行 one-hot 编码
- c# - Lerp 没有平移而是直接移动物体