sharding-jdbc1.5.3,无需分库分表的表,配置default-data-source,单表查询正常,多表关联查询找不到数据源

发布于 2021-12-05 01:30:28 字数 606 浏览 818 评论 2

spring + mybatis + sharding-jdbc1.5.3 + oracle
多表关联查询时,报错:
### SQL: select a.roleid,a.rolename,a.remark,a.createtime?? from mr_role a, mr_userrole b where a.roleid=b.roleid and b.userid=?

Caused by: com.dangdang.ddframe.rdb.sharding.exception.ShardingJdbcException: Cannot find table rule and default data source with logic tables: '[mr_role, mr_userrole]'
?at com.dangdang.ddframe.rdb.sharding.routing.type.complex.ComplexRoutingEngine.route(ComplexRoutingEngine.java:81)
?at com.dangdang.ddframe.rdb.sharding.routing.router.ParsingSQLRouter.route(ParsingSQLRouter.java:117)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千纸鹤带着心事 2021-12-10 05:03:53

createtime后面2个问号只是日志拷贝导致,实际执行SQL在mybatis的xml中,2个问号处只是换了行:

select a.roleid,a.rolename,a.remark,a.createtime
  from mr_role a, mr_userrole b where a.roleid=b.roleid and b.userid=#{userid}

 

mr_role, mr_userrole都是在默认数据源。仅是普通关联查询。同样的配置,执行单表查询正常。

 

create table mr_role  (
   roleid               integer                         not null ,
   rolename             varchar(50)                     not null ,
   remark               varchar(255)                    ,
   createtime           varchar2(19)                   default to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') not null
);

create table mr_userrole  (
   userid               integer                         not null ,
   roleid               integer                         not null ,
   createtime           varchar2(19)                   default to_char(sysdate,'yyyy.mm.dd hh24:mi:ss') not null ,
   constraint pk_mr_userrole primary key (userid, roleid)
);

 

 

只为守护你 2021-12-10 04:42:32

createtime后面的两个问号是什么意思,是不是sql本身就写错了?

 

mr_role, mr_userrole都是在默认数据源么?信息不足,无法定位。至少需要配置信息,sql执行的sql.show日志,数据库表结构以及全部的执行代码才可能判断是否有问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文