【问题标题】:Oracle accesses wrong tableoracle访问错误的表
【发布时间】:2014-01-15 05:09:04
【问题描述】:

我使用的是 Oracle 11g Express 版本。我在两个不同的表空间上创建了两个不同的用户(user1、user2)。每个用户都有相同的表集(相同的表名、列、数据类型)。我将我的应用程序配置为连接到 user2,但它总是访问 user1 的表。我的期望是它将访问 user2 的表。我仔细检查了用于连接数据库的用户名/密码。我不知道这里发生了什么!

我找到了答案:问题不在于 Oracle。是因为Hibernate,我在这里找到了答案:http://www.schakko.de/2014/01/07/hibernate-uses-wrong-schema-during-schema-validation/

对不起,让我感到困惑^^

【问题讨论】:

  • 表格数据也有差异吗?
  • 看起来,问题出在您的应用配置上,而不是 oracle。请查看您的应用程序的配置文件。
  • 我不知道问题出在哪里,因为当我删除user1时,我的应用程序立即连接到了user2!
  • 在我的应用程序中只有一个地方可以设置用于连接数据库的用户名/密码,所以我确定这不是因为我的应用程序配置的原因
  • 避免休眠的另一个原因...:/

标签: oracle hibernate


【解决方案1】:

一种解决方案是设置 hibernate.default_schema 属性以适合您的用户(在您的持久性单元中或作为 env 属性使用 -Dhibernate.default_schema=YOUR_SCHEMA jvm 参数)。

其他解决方案是撤销您的用户访问其他架构的权限。由于潜在的安全问题,这也不应该被允许(除非该特定用户需要这种访问权限)。

【讨论】:

    【解决方案2】:
    select t.* 
      from user2.table1 t
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多