Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere 12 - 更改和升级 » 升级到 SQL Anywhere 12 » SQL Anywhere 服务器升级 » 升级的疑难解答信息

 

确保在应用 EBF 时 JDBC 应用程序未运行

应用 EBF 后,您可能会发现 JDBC 应用程序停止工作,并收到类似下面的消息:

sajdbc.jar 版本与共享对象版本不匹配。

返回此消息的原因是在应用 EBF 后,运行了 Interactive SQL、Sybase Central、快速启动程序或您自己的 JDBC 应用程序。在这种情况下,Java VM 将锁定其装载的任何 DLL 或共享对象,但不锁定 JAR 文件。因此,如果应用 EBF,通常会更新 sajdbc、sajdbc4、jodbc 和/或 jaodbc4 JAR 文件,而不更新随附的 dbjdbc 和/或 dbjodbc DLL 或共享对象。JDBC 应用程序重新启动后,JDBC JAR 文件与随附的 DLL 或共享对象不匹配,从而返回上述消息。

先尝试关闭所有基于 JDBC 的应用程序,然后重新应用 EBF。如果重新应用 EBF 不起作用,请尝试通过以下方法解决问题:

  • 检查 EBF 安装程序是否已正确更新 DLL 和共享对象  

    • 在 Windows 上,检查在应用 EBF 时,dbjdbc.dlldbjodbc.dll 文件是否已正确更新。

    • 在 Unix 上,检查在应用 EBF 时,libdbjdbc.so.1libdbjodbc.so.1 共享对象是否已正确更新。

    注意

    检查 DLL 和共享对象时,必须检查是否与 JAVA VM 位数相匹配,而不检查是否与 SQL Anywhere 服务器位数相匹配。

  • 检查系统中没有 DLL 和共享对象的多个副本   如果 DLL 和共享对象已正确更新,请确保 DLL 和共享对象不存在多个副本。如果您为了规避不允许在多个类装载程序中装载 DLL 和共享对象的 Java 限制而将 DLL 和共享对象复制到 Java VM 的扩展文件夹中,则会发生这种情况。

  • 检查是否已正确更新 JAR 文件。   如果 DLL 和共享对象已正确更新,并且系统中不存在多个副本,则请确保已正确更新各种 JAR 文件。要检查每个 JAR 文件,请执行以下命令,并确保 JAR 文件所报告的 SQL Anywhere 版本和内部版本号与您所安装的 EBF 的 SQL Anywhere 版本和内部版本号相匹配。

    要检查 sadbc.jar,请运行以下命令:

    java -cp sajdbc.jar sybase.jdbc.sqlanywhere.IBuildNum

    要检查 sajdbc4.jar,请运行以下命令:

    java -cp sajdbc4.jar sybase.jdbc4.sqlanywhere.IBuildNum

    要检查 jodbc.jar,请运行以下命令:

    java -cp jodbc.jar ianywhere.ml.jdbcodbc.jdbc3.IBuildNum

    要检查 jodbc4.jar,请运行以下命令:

    java -cp jodbc4.jar ianywhere.ml.jdbcodbc.jdbc4.IBuildNum

    确定哪个 JAR 文件、DLL 或共享对象与 EBF 内部版本号不匹配后,请确保该文件未被应用程序锁定,然后重新应用 EBF。