【发布时间】:2019-10-18 03:01:08
【问题描述】:
我正在使用 Spring Boot 1.5.18.RELEASE。
我使用以下link关注了多个数据源:
但是当我在同一台服务器中有数据源时它可以工作。
这是我的情况:
- datasource1 在一个服务器上:server1
- datasource2 在另一台服务器上:server2
- 使用本机查询,我必须通过加入 2 个数据源来获取记录。
在上述情况下,spring boot 应用程序仅尝试检查服务器 1 中的表,结果我得到类似
的 sql 异常SqlExceptionHelper - SQL Error: 1146, SQLState: 42S02
SqlExceptionHelper - Table 'datasource2.table2' doesn't exist
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table
'datasource2.table2' doesn't exist
如何解决这个问题?
【问题讨论】:
-
不幸的是,本机查询只能针对其中一个数据源运行。如该链接所述,每个
EntityManager都是针对单个数据源创建的 - 这是正常的。要运行跨数据库服务器的单个本机 (SQL) 查询,需要一个允许定义外部或远程表的数据库。其他人可能知道更多,但我不知道 MySQL 中有这个特性。其他一些(例如 Oracle 和 SQL Server)可以做到这一点。 -
您不能这样做,因为每个实体经理都有自己的会话。
-
如果表在两个数据库中,您必须使用两个数据源分别检索并在代码中以给出 SQL 连接结果的方式处理它们。
-
请向我们提供有关您正在使用的数据库的信息。如果是 SqlServer tale a look
标签: hibernate spring-boot spring-data-jpa multi-database-connections