java - 在 UCanAccess 中通过 DDL 创建的表无法在 Access 本身中打开

标签 java sql ms-access windows-7-x64 ucanaccess

我已经能够使用 UCanAccess 2.0.6 驱动程序从 Java 成功创建 MS Access 数据库表。但是,我随后无法从 MS Access(Microsoft Office 2007、Windows 7 64 位)打开表格,MS Access 抛出错误:

Reserved Error (-5001); there is no message for this error.

在 MS Access 本身中使用完全相同的 CREATE TABLE 语句不会产生任何问题。奇怪的是,表已成功创建,并且可以通过查询成功添加和检索数据。因此这些表位于基础数据库中,但 Access 无法打开它们。

如果有帮助,我正在使用的创建语句之一如下:

CREATE TABLE tblMain (
        ID COUNTER NOT NULL PRIMARY KEY, 
        Project INTEGER NOT NULL, 
        ItemNumber INTEGER NOT NULL, 
        DateCreated DATETIME NOT NULL, 
        ItemName TEXT NOT NULL, 
        ItemDescription MEMO NOT NULL, 
        OriginatorPerson TEXT NOT NULL, 
        DueDate DATETIME NOT NULL, 
        Closed YESNO NOT NULL, 
        ClosingComments MEMO NOT NULL, 
        Priority YESNO NOT NULL, 
        AssignedToCompany TEXT NOT NULL, 
        AssignedToPerson TEXT NOT NULL);

最佳答案

我无法重现此问题,无论是使用 Access 2007 还是使用 Access 2010。 使用 Access 2003 也一切正常。但它可能会发生在某些 Access 版本中...... 它看起来与另一个用户在 UCanAccess 论坛中报告的问题非常相似,我已修复(但在那种情况下,我无法重现此问题): http://sourceforge.net/p/ucanaccess/discussion/help/thread/5a57b955/ .

我很确定这是关于 UCanaccess(使用底层 jackcess)保留列属性(例如,默认值、“必需”等)的方式。 您能否尝试重新执行您的 DDL,避免在不需要的地方设置“not null”,例如在 ID 列(Counter 和 PK)上?请让我知道您的发现,我没有其他方法可以明确修复此错误。

关于java - 在 UCanAccess 中通过 DDL 创建的表无法在 Access 本身中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23836545/

相关文章:

php - Laravel 每次迁移多个表

excel - VBA如何确定正在使用哪个应用程序

java - 如何在 Spring-Boot 中使用 mockito-inline?

SQL Server 在子字符串中使用条件

java - MapReduce中的排序

如果加入 SQLite 棘手

sql - 使用 VBA 根据其他表的条件获取值的总和?

ms-access - 我可以在 Access 中隐藏 'Click to Add' 列吗?

java - 如果其中一项测试失败,如何继续在 TestNG 中运行测试

java - 什么时候应该使用泛型来定义类型之间的关系?