weixin_42492646
2011-11-25 08:06 阅读 1.4k

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个连接的

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

6条回答 默认 最新

  • 已采纳
    yanjinke yanjinke 2011-11-25 09:31

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

    点赞 评论 复制链接分享
  • jiangguangxian jiangguangxian 2011-11-25 08:29

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

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

    解决方法:

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

    点赞 评论 复制链接分享
  • huoyj huoyj 2011-11-25 08:34

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

    点赞 评论 复制链接分享
  • wangyijiangshui wangyijiangshui 2011-11-25 08:45

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

    点赞 评论 复制链接分享
  • yanjinke yanjinke 2011-11-25 09:15

    [quote]283433775 写道

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

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

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

    点赞 评论 复制链接分享
  • jiangguangxian jiangguangxian 2011-11-25 09:28

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

    还是原理上得问题:

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

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

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

    点赞 评论 复制链接分享

相关推荐