主题:请问beetlsql同一个mysql实例多个库的问题

wddark 2018年05月07日 87

谢谢作者。

mysql,同一个实例,上面有多个库,比如db1,db2。

框架是springboot2

构建DataSource bean时候ds.setJdbcUrl(env.getProperty("spring.datasource.url"));

spring.datasource.url有一个默认的库,db1。

有一个表tbl2在db2。

我在bean上面@Table(name="db2.tbl2")是不行的。看sql,查询的是

db1.db2.tbl2

请问应当如何标注tbl所在的db2?谢谢

wddark 2018年05月07日

另外,文档说

注:可以为对象指定一个数据库shcema,如name="cms.user",此时将访问cms库(或者cms用户,对不同的数据库,称谓不一样)下的user数据表


但是我运行的效果不是这样,变成了db1.db2.tbl2

wddark 2018年05月07日

仔细看了一下sql

查询是

SELECT * FROM `db2.tbl2` WHERE `status` = ? 

这有问题,假如是查询SELECT * FROM `db2`.`tbl2` 

是没问题的,请问如何解决?

闲大赋 2018年05月07日

如果是这样,那就是有问题了,我看看下个版本更新一下吧

wddark 2018年05月07日

好的,更新了请通知一声,谢谢。

现在可以用@Table(name="db2`.`tbl2")

这种方式临时绕过去。另外建议支持javax的@Table注解的catalog属性,感觉用这个更好一点,再次感谢。

闲大赋 2018年05月08日

说的是 javax.persistence.Table ?

闲大赋 2018年05月09日

用的是新版本嘛?我这边无法重现这个问题?


@Table(name="orm.user")
public class User {
}
┏━━━━━ Debug [user._gen_selectById] ━━━
┣ SQL:	 select * from `orm`.`User` where `id` = ?
┣ 参数:	 [1]
┣ 位置:	 org.beetl.sql.test.QuickTest.main(QuickTest.java:47)
┣ 时间:	 19ms
┣ 结果:	 [org.beetl.sql.test.User@797b0699]
┗━━━━━ Debug [user._gen_selectById] ━━━

AbstractDBStyle.getTableName 用来获取数据库表名字,你看看在你那这个方法有什么问题?目前我的环境和版本工作正常

闲大赋 2018年05月09日

补充一下:

MetadataManager.initOtherSchemaTabel  会初始化这个其他schema的表信息,按理说不应该出问题

wddark 2018年05月11日

奇怪,我这里自动好了。。。。starter有更新?

不过,问题解决就好,谢谢作者