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

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 16 - 更改和升级 » 如何升级到 SQL Anywhere 16 » 疑难解答:数据库升级

 

疑难解答:确保在应用支持包时 JDBC 应用程序未运行

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

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

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

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

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

    • 在 Windows 上,检查在应用支持包时是否正确更新了 dbjdbc16.dlldbjodbc16.dll 文件。

    • 在 Linux/Unix 上,检查在应用支持包时是否正确更新了 libdbjdbc16.so.1libdbjodbc16.so.1 共享对象。

    • 在 Mac OS X 上,检查在应用支持包时是否正确更新了 libdbjdbc16.dyliblibdbjodbc16.dylib 共享对象。

    注意

    系统上安装的 DLL 或共享对象可能有 32 位和 64 位两种版本。检查 DLL 或共享对象时,必须检查是否与 JAVA VM 位数相匹配,而不是检查是否与 SQL Anywhere 服务器的位数相匹配。

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

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

    要检查 sajdbc4.jar,请运行以下命令(将 path 替换为 JAR 文件的路径):

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

    要检查 jodbc4.jar,请运行以下命令(将 path 替换为 JAR 文件的路径):

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

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