如何禁用连接检查约束

Posted

技术标签:

【中文标题】如何禁用连接检查约束【英文标题】:How disable check constraint on connection 【发布时间】:2014-09-15 20:24:12 【问题描述】:

java.sql.DriverManager.getConnection("jdbc:ucanaccess:///user/dev/project/project.mdb")

我有这个错误

Java::NetUcanaccessJdbc::UcanaccessSQLException: 完整性约束违规:NOT NULL 检查约束; SYS_CT_10991 表:EMPLOYE 列:DATE

我不想在连接处控制完整性,在连接处禁用检查约束的属性参数是什么?

感谢您的帮助

【问题讨论】:

我找到了这个***.com/questions/6525713/…,但是如何在java程序中执行语句? 你不能,你应该在创建语句之前获取连接。并且物理上写在您的 accdb/mdb 上的约束已启用。请参阅下面的答案。 【参考方案1】:

如果在连接时抛出此异常,则表示数据库数据与其约束不一致:ucanaccess 正在正确构建具有所有完整性约束的 dbms 层,但其中一个约束的创建失败。

您不能禁用它,ucanaccess 必须创建所有约束,以便在您尝试插入/更新/删除记录时,检查所有相关约束并保留您的数据库一致状态。

为什么不删除数据库表定义中的非空约束?(您只需将提到的列上的“必需”属性从真设置为假)。好像没有考虑进去……

【讨论】:

数据库被应用程序客户端/服务器使用,我不能修改它。我想以只读方式执行选择语句。这个异常不是 hsqldb 产生的? 是的,因为 hsqldb 是“镜像”dbms。 Ucanaccess 从它刚刚用 jackcess 读取的约束和 hsqldb 上的约束进行“转换”。所以它在 hsqldb 上创建它们,但它们实际上在你的 mdb 上。是的,我理解你的问题,但也许我唯一能做的就是实现一个只读连接参数(它已经在我的计划中)。仅在这种情况下,我将避免在 hsqldb 上创建任何约束。 另外,向 mdb 管理员报告 mdb 当前处于不一致状态会很有用。 感谢 jamadei 为您的 cmets 和您的工作,只读连接参数是个好主意。我已经删除了违反完整性约束的行,现在,我还有另外两个问题。 1/ 有另一个带有 windows 路径的 mdb 文件的链接表。我在linux上,这不起作用。消息:警告:给定文件不存在:x:\project\project_other.mdb 和 Java::JavaLang::OutOfMemoryError:Java 堆空间。我可以跳过连接处的链接表吗? 2/链接表问题后,我的数据库现在是只读的... 这只是一个警告(外部链接将被跳过),但您可以使用Remap连接参数链接Linux上的外部数据库。关于内存问题,您可以增加 VM Xmx 或使用 memory=false 设置。有关详细信息,请参阅 ucanaccess 网站。

以上是关于如何禁用连接检查约束的主要内容,如果未能解决你的问题,请参考以下文章

iOS应用程序没有互联网连接时如何禁用segue?

SAP ABAP 如何启用SSL HTTPS连接

如何打开OTG连接设置

MySQL禁用外键约束检查

每当检查连接时,schema.sql 就会运行

是否应该通过 DISABLE TRIGGER ALL 禁用外键约束检查?