Sharding-jdbc 提示:Missing the data source name: ‘m0‘

阿里 阅读:1570 2021-03-31 12:52:24 评论:0

异常描述:

### 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 "批量新增成功"; 
	}

 

声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号