我正在使用 hibernate(3.6.9.Final) 和 oracle 11g 数据库和 jdbc(ojdbc6:oracle.jdbc.OracleDriver) 我的连接字符串是 jdbc:oracle:thin:@SERVERNAME:1521:ORCL 数据源:com.mchange.v2 .c3p0.ComboPooledDataSource
ioc:spring 3.0.7.RELEASE
服务器:tomcat 6
我的问题的描述是:我在我的 oracle 服务器 MY_SC 和 MY_OLD_SC 中定义了两个模式(用户),MY_OLD_SC 代表我的应用程序的旧模式,并且表 MY_TABLE 具有一个列名 MY_ID MY_SC 是我的应用程序的最新模式,并且有 MY_TABLE 但除了 MY_ID 列它还有 MY_NAME 列
当我使用 MY_SC 用户启动我的应用程序并在验证时休眠时,我因以下异常而失败:
org.hibernate.HibernateException:缺少列:MY_OLD_SC.MY_TABLE 中的 MY_NAME
即使我验证了我与 MY_SC 用户连接,它似乎连接到错误的模式,只有在我从数据库中删除 MY_OLD_SC 之后,我才能连接到 MY_SC。
这个问题有时并不一致,我可以使用不同的骗局,但是当它失败一次时,我必须删除数据库中的所有模式,除了我想要使用的模式。大多数情况下,它发生在我使用新模式的 impdp 之后,但不仅仅是在 impdp 之后
请注意,如果我与 sql developerper 连接,则与用户的连接似乎是正确的。
创建用户的声明:
CREATE USER username IDENTIFIED BY username
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE temp
QUOTA UNLIMITED ON USERS;
GRANT conn TO username;
impdb 的代码:
./impdp system/pass@orcl remap_schema=org_name:new_name directory=DATA_PUMP_DIR TRANSFORM=oid:n dumpfile=backup.dmp
如果您知道可能是什么问题,那就太好了,也许我需要以不同的方式创建用户?什么可能导致这个问题?
提前感谢