MySql跨库视图问题

有数据库databaseA,databaseB, 在databaseA中有张表tabA, 由于在项目中数据连接的权限问题,在J2EE项目中databaseB不能直接通过databaseA.tabA来访问tabA,需要在databaseB建跨库视图 viewA: select * from databaseA.tabA

奇怪的问题发生了,用MySql客户端来访问viewA 都没有问题, 但是如果在J2EE项目中访问viewA就会抛出异常, databaseA.viewA 表或视图不存在, 一直找不到原因

J2EE项目中是多数据库连接的, databaseA,databaseB 是在项目中创建2个连接的

[quote]按你的方法试了,还真行, 可以告诉我为什么吗? [/quote]
我也不知道原因,等下去官网找找看

这是肯定不行的,使用sql管理器当然可以通过databaseA.tabA来访问,但是

在J2EE或者其他程序中,你连接的数据库,只是对databaseA或者databaseB这样的库进行连接,并非对整个数据库管理系统进行连接,所以你连接到databaseB就只能访问databaseB中的表,其他数据库比如databaseA数据库中的表是访问不到的。

解决方法:

一个j2ee程序是可以同时连接多个数据库的,你对两个数据库databaseA和databaseB建立两个连接对象ConnectA和ConnectionB,这样你能通过程序来互相访问。

应该是mysql的JDBC驱动无法支持跨库视图的访问,J2EE项目允许建多个数据源,你建两个数据源实现一下。

任何数据库都不支持跨库sql,你连接那个库,就只能sql访问哪个库的数据库表!

[quote]283433775 写道

一个j2ee程序是可以同时连接多个数据库的,你对两个数据库databaseA和databaseB建立两个连接对象ConnectA和ConnectionB,这样你能通过程序来互相访问。

两个连接都建立的 [/quote]

这个是不是可以理解为 oracle实例中有多个用户,多用户之间的互相访问呢?[quote]databaseA.viewA 表或视图不存在[/quote] 这个异常提示的有奇快,试试看在databaseA下也建个视图 viewA select * from databaseA.tabA

[quote]
按你的方法试了,还真行, 可以告诉我为什么吗?
谢谢
[/quote]

还是原理上得问题:

你的mssql还是oracle,还是mysql,它是一个数据库的管理服务,里面有很多的库。
可以理解为数据仓库。

你的程序 j2ee ado.net也好,建立的连接,只能是对一个库,而不是对于整个数据仓库进行连接。

既然你只能连接一个库比如databaseA,那么你只能访问你连接的那个库中的数据,库与库之间是完全隔离的,只有通过数据管理服务里面是可以互相通讯的。