Sharding-jdbc报错:Missing the data source name:‘m0‘解决方案
异常描述
### Error updating database. Cause: java.lang.IllegalStateException: Missing the data source name: 'm0'
### The error may exist in com/zzg/mapper/OrderMapper.java (best guess)
### The error may involve com.zzg.mapper.OrderMapper.insert-Inline
### The error occurred while setting parameters
### Cause: java.lang.IllegalStateException: no table route info] with root cause
java.lang.IllegalStateException: no table route info
异常造成原因
@RequestMapping(value = "/batchInsert", method = { RequestMethod.GET })
public Object batchInsert() {
for (int i = 0; i < 10; i++) {
Order order = new Order();
order.setPrice(new BigDecimal(Math.random()));
order.setUserId(new Random().nextLong());
order.setStatus("0");
orderService.save(order);
}
return "批量新增成功";
}使用MyBatis-plus 新增Order 实体属性时,提示Missing the data source name: 'm0'
造成原因是由于userId的属性值,我使用的是随机函数生成的Long 值进行填充,导致sharding-jdbc 路由引擎执行分析时与自己定义的数据库规则计算值异常导致输出了一个不存在的数据源。
调整后的插入功能代码:
@RequestMapping(value = "/batchInsert", method = { RequestMethod.GET })
public Object batchInsert() {
for (int i = 0; i < 10; i++) {
Order order = new Order();
order.setPrice(new BigDecimal(Math.random()));
order.setUserId(Long.valueOf("" + i));
order.setStatus("0");
orderService.save(order);
}
return "批量新增成功";
}总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java多线程编程中使用Condition类操作锁的方法详解
Condition是java.util.concurrent.locks包下的类,提供了对线程锁的更精细的控制方法,下面我们就来看一下Java多线程编程中使用Condition类操作锁的方法详解2016-07-07
Springboot如何获取配置文件application.yml中自定义的变量并使用
这篇文章主要介绍了Springboot中获取配置文件(application.yml)中自定义的变量并使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-09-09


最新评论