原来项目中没有用到跨库查询,但在Navicat中使用过,当时没有在意。最近同事问是否可以跨库查询,就想项目中配置了连接池,也指定了库名,当时以为只能查询当前库的,后来又想工具中可以用,代码中应该也可以用。
一、如果是同一个数据库下的不同库
1、直接查询表名前加上库名,如:库名.表名
2、数据库账号一定要有访问两个数据库的权限
跨库查询的原因分析:项目启动时建立数据库连接池是指定了用户名、密码和库名,原来以为是这个连接池是针对这个库的,所以正常查询时不用写库名,相当于默认是创建连接池时指定的库名。但当发现查询语句中指定了跨库查询的库名时,会去找对应的库及表,如果找到了(有权限和真实存在),就执行对应的SQL语句。
原因总结:
1、连接池指定库名相当于指定了默认的操作库
2、连接池是针对数据库的(比如某个MySQL库对应的进程)而不是针对某个具体库的。
二、不通服务器上的数据库