【问题标题】:Problem changing Database in Hibernate在 Hibernate 中更改数据库的问题
【发布时间】:2011-03-21 18:32:46
【问题描述】:

我遇到了休眠问题,不知道到底发生了什么,我有这个项目在工作,我使用以下设置连接到 Oracle 10g 数据库:

Host Name: localhost
port:1521
SID:orcl
user:anfxi
password:password

现在我在家尝试远程使用同一个数据库,我通过 VPN 连接并且数据库 IP 现在是 10.73.98.230,我导入了我的 WAR 并更改了我的设置 hibernate.cfg.xml 来自:

<property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin://localhost:1521:orcl</property>
<property name="hibernate.connection.username">anfexi</property>
<property name="connection.password">password</property>
<property name="connection.pool_size">1</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">validate</property>
<property name="current_session_context_class">thread</property>

到:

<property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin://10.73.98.230:1521:orcl</property>
<property name="hibernate.connection.username">anfexi</property>
<property name="connection.password">password</property>
<property name="connection.pool_size">1</property>
<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>
<property name="show_sql">true</property>
<property name="hbm2ddl.auto">validate</property>
<property name="current_session_context_class">thread</property>

但我不断收到此错误:

ERROR [main] (SchemaValidator.java:135) - could not get database metadata
java.sql.SQLException: Listener refused the connection with the following error:
ORA-12505, TNS:listener does not currently know of SID given in connect descriptor
The Connection descriptor used by the client was:
localhost:1521:orcl

所以它似乎仍在使用 localhost 作为数据库地址,我清理了我的项目并重建了,仍然没有运气,还有什么我可能会丢失的吗?休眠配置是否被缓存在我必须擦除的某些文件中?

编辑 对于它可能提供的服务,我可以使用 SQL 开发人员进行连接,问题只是休眠仍然使用旧的localhost:1521:orcl 连接描述符。

感谢您的帮助!

【问题讨论】:

    标签: eclipse hibernate jakarta-ee oracle10g vpn


    【解决方案1】:

    确认您在 Eclipse 中更改的 xml 文件实际上正在部署到服务器。我偶尔会遇到 Eclipse 不知道它需要为我的 webapp 重新部署某些文件的问题。

    如果您使用的是 Tomcat 并使用工作区元数据(默认)进行部署,您可以通过查看您的文件系统来检查实际部署的 WAR 文件的样子:

    WORKSPACE/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/APPNAME/.../path/to/hibernate.cfg.xml

    如果您发现配置文件没有更新,我建议您在 Eclipse 中取消部署您的应用程序,删除上述路径中的整个 APPNAME 目录,然后重新部署干净。

    如果这些都不起作用,请在项目范围内搜索“localhost”,看看是否可能有任何硬编码的连接字符串。

    【讨论】:

    • 确实它正在部署旧版本的 hibernate.cfg.xml,无论如何它都不会应用我的更改,我不得不取消部署,创建一个新项目,复制我的文件,修改xml并重新部署。只有这样它才起作用。奇怪的行为,但现在正在工作。非常感谢。
    【解决方案2】:

    这种问题通常是由于存在错误的配置文件。也许您有两个文件副本,您更改了一个,但系统正在使用另一个

    通常在构建/编译时,资源会被复制到目标/构建文件夹。检查源文件夹和构建目标文件夹等。

    在文件系统中搜索名称为 hibernate.cfg.xml 或内容为 localhost:1521:orcl 的所有文件

    检查类路径,或尝试将包含所需配置文件的文件夹显式放在类路径中。

    也可能是某些其他配置覆盖了您的配置,例如数据源文件管理器或 persistence.xml 文件。如果你也有,请检查它们。

    您是如何运行您的应用程序的?通过测试用例、独立控制台应用程序、servlet/j2ee 容器?

    【讨论】:

      【解决方案3】:

      无法理解“orcl”SID。可能 SID 存在于您的“localhost”上,但不在服务器“10.73.98.230”上。验证您使用的是“10.73.98.230”上可用的正确 SID。

      【讨论】:

      • 存在 SID,localhost 和 10.73.98.230 是同一台计算机,我在家连接时使用 10.73.98.230,当我在工作时我可以使用 localhost,一切正常...
      【解决方案4】:

      尝试在配置文件中更改此行。

      <property name="hibernate.connection.url">jdbc:oracle:thin:@10.73.98.230:1521:orcl</property>
      

      用@替换//

      您可以点击链接获取信息http://www.cryer.co.uk/brian/oracle/ORA12505.htm

      希望这会有所帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-09
        • 2011-11-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-02
        相关资源
        最近更新 更多