【问题标题】:UCanAccess exception "Unsupported newer version: 5"UCanAccess 异常“不支持的较新版本:5”
【发布时间】:2018-03-29 21:42:39
【问题描述】:

我正在尝试使用带有代码的 ucanaccess(4.0.2) jar 访问 MS Access 2016 (.accdb) 文件:

public class Test {
    static String path ="*****/src/main/resources/TestDatabase.accdb";  //absolute path to my access file
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
       Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");
       Connection conn = DriverManager.getConnection("jdbc:ucanaccess://"+path);
}

我收到以下异常:

Exception in thread "main" net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.2 Unsupported newer version: 5
at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:264)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:270)
at db.Test.main(Test.java:29)
Caused by: java.io.IOException: Unsupported newer version: 5
at com.healthmarketscience.jackcess.impl.JetFormat.getFormat(JetFormat.java:293)
at com.healthmarketscience.jackcess.impl.DatabaseImpl.<init>(DatabaseImpl.java:517)
at com.healthmarketscience.jackcess.impl.DatabaseImpl.open(DatabaseImpl.java:400)
at com.healthmarketscience.jackcess.DatabaseBuilder.open(DatabaseBuilder.java:252)
at net.ucanaccess.jdbc.DefaultJackcessOpener.open(DefaultJackcessOpener.java:35)
at net.ucanaccess.jdbc.DBReference.<init>(DBReference.java:161)
at net.ucanaccess.jdbc.DBReferenceSingleton.loadReference(DBReferenceSingleton.java:51)
at net.ucanaccess.jdbc.UcanaccessDriver.connect(UcanaccessDriver.java:98)
... 3 more

使用的 Maven 依赖项:

任何帮助将不胜感激。

谢谢。

【问题讨论】:

  • Unsupported newer version: 5你真的不知道这意味着什么?
  • 令人惊讶的是,虽然 UCanAccess 声明支持 access 2016,但底层的 Jackcess 库却没有。这是 Jackcess 关于不支持版本的一个例外。不知道为什么不匹配。查看与 2016 版本相关的 UCanAccess 文档。也许那里有什么。您可以尝试手动覆盖到最新的 Jackcess 2.1.9,但我怀疑这是否会有所帮助。
  • 我对 UCanAccess 没有那么丰富的经验,但在使用 BigInt 数据类型的 ODBC 和数据库方面遇到过类似的问题。请参阅this Microsoft support page(BigInt 是一种真正的新数据类型,仅在较新版本的 Access 2016 中实现,我怀疑 UCanAccess 已经实现了它)
  • @aleh 你是对的,我深入研究了代码,发现 ucanaccess jar 使用的 jackcess2.1.6 库尚不支持 MS Access 2016 中使用的喷气发动机。我会尝试用最新版本覆盖jackacess 2.1.6。

标签: java maven ms-access jdbc ucanaccess


【解决方案1】:
  1. 使用来自jackcess 的最新 jar 文件覆盖您的库
  2. 转到您的 MS Access 2016
  3. 在“信息”下单击“Compact and Repair”。保存表格。
  4. 再次尝试运行 netbeans 代码。

它在我的情况下有效:)

【讨论】:

    【解决方案2】:

    Jackcess 将在 2.1.10 版本中支持 Access 2016 数据库(更改目前在主干中,但尚未发布)。

    【讨论】:

      【解决方案3】:

      我遇到了同样的错误。我已经升级到jackcess-3.0.1,现在已经解决了。

      【讨论】:

        猜你喜欢
        • 2015-10-02
        • 2018-03-19
        • 2016-09-29
        • 1970-01-01
        • 2011-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多