问题标签 [ora-00001]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hibernate - 异常:无法将数据库状态与会话同步
我有一个在 spring 和 hibernate 3.0 上开发并部署在 apache tomcat 6 上的 Web 应用程序。当我尝试将数据插入到表之一('CAR_ATTRIBUTE'表)时,我遇到了错误。
此错误只能在生产环境中重现。相同的代码在我的本地环境中工作,指向相同的数据库。我尝试添加记录器语句,发现序列生成器每次都生成相同的值,即“0”。等待您的帮助。
-- 太阳2
谢谢您的回复。是的,异常清楚地表明它违反了约束。CARS.XAK1CAR_ATTRIBUTE 是组合键,它应该是唯一的。我已经验证了所有数据(通过记录器)并且找不到可能违反此约束的数据。此外,如果它违反了这个约束,那么它不应该在我指向同一个数据库的本地环境中工作。这可以特定于服务器吗?如果可以帮助解决问题,我可以提供更多详细信息,例如表 DDL 和我要插入的数据。——桑托什
java - 写入数据库时出现异常 (org.hibernate.exception.ConstraintViolationException)
我有一个文件(这个文件实际上有制表符分隔的值),必须写入其中一个数据库表。该文件也可以包含重复的条目。我正在处理文件中的 5000 条记录,所以我首先解析文件中的前 5000 条记录,如果它们包含任何重复的条目我只是忽略重复项并将其中的唯一记录写入数据库,然后再次处理下一个 5000以类似的方式记录,直到达到 EOF。现在,在编写这 5000 条记录时,5000 条记录的集合之间可能存在重复,如果发生这种情况(然后数据库抛出 DomainObjectExistsException),那么我会捕获异常并简单地更新记录。我正在执行这样的更新操作:
其中 femtoFactoryData 是一个 java Object(POJO),必须将其写入由文件中的制表符分隔值构造的数据库表中。表的主键只不过是 Femto 的 ID 和状态(临时/永久)。
但是在执行此更新操作时,我得到:
这是我的程序的堆栈跟踪:
oracle - Oracle:唯一键和主键
考虑包含唯一键和主键的表。表已经包含数据。如果我在表中添加任何行,我收到一个错误(ORA - 0001),这是由于将重复值添加到主键或唯一键.这里我无法确定错误是否是由于向主键或唯一键添加了重复值。有人可以建议我如何识别吗?
java - Seam / Hibernate - 获取 ORA 消息文本
当我有重复的键错误err.getMessage()
返回org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch
在堆栈跟踪中也有这个错误:
java.sql.BatchUpdateException: ORA-00001: unique constraint (ACM.SCH_UK) violated
我怎样才能得到这个 ORA-00001 消息作为一个字符串,而不是org.hibernate.exception.ConstraintViolationException
文本?
sql - 插入时Oracle唯一约束错误
EVENT_ID 字段是问题所在。但我还是想插入它。但是,当我尝试删除该名称的约束时,它说没有这样的约束。此外,在 USER_CONSTRAINTS 表中没有显示这样的约束。我应该怎么办?
c# - 如何通过实体框架为 Oracle 数据库自动生成身份?
我正在为实体框架(测试版)使用 Oracle 提供程序,但我遇到了一个问题。
我们的表有 Id 列,在 StoreGeneratedPattern 中设置为 Identity。我认为 EF 会自动执行“基础工作”,例如创建序列,并为我添加到表中的每条记录获取新标识。但是当我运行代码添加新记录时,例如:
仍然抛出异常,即
{“ORA-00001:违反了唯一约束 (ADMINMGR.CONSTRAINT_COMMENT)”}
(CONSTRAINT_COMMENT 是约束要求评论标识必须是唯一的。
我该如何解决这个问题?
非常感谢你!
sql - 使用 Oracle 和 PL/SQL 插入或更新
我有一个 PL/SQL 函数,它在 Oracle 数据库上执行更新/插入,该数据库维护一个目标总数并返回现有值和新值之间的差异。
这是我到目前为止的代码:
这在多个线程永不失败的单元测试中按预期工作。
但是,当加载到实时系统上时,我们看到此失败,堆栈跟踪如下所示:
行号(我已将其删除,因为它们在上下文中毫无意义)验证第一次更新由于没有数据而失败,插入由于唯一性而失败,第二次更新由于没有数据而失败,这应该是不可能的。
从我在其他线程上读到的内容来看,MERGE 语句也不是原子的,可能会遇到类似的问题。
有谁知道如何防止这种情况发生?
oracle - 强制 Hibernate 在 INSERT 之前发出 DELETE 以避免违反唯一约束?
背景:http: //jeffkemponoracle.com/2011/03/11/handling-unique-constraint-violations-by-hibernate
我们的表是:
对 BOND_PAYMENT_ID 有一个主键约束,对 (BOND_NUMBER, PAYMENT_ID) 有一个唯一约束。
该应用程序使用 Hibernate,并允许用户查看链接到特定债券的所有付款;它允许他们创建新链接,并删除现有链接。一旦他们在页面上进行了所有他们想要的更改,他们点击“保存”,Hibernate 就会发挥它的魔力在数据库上运行所需的 SQL。显然,Hibernate 会计算出哪些记录需要删除,哪些记录需要插入,其余的保持不变。不幸的是,它首先执行 INSERT,然后执行 DELETE。
如果用户删除了一个支付链接,然后改变主意并重新插入一个指向相同支付的链接,Hibernate 很乐意尝试插入它然后删除它。由于这些插入/删除作为单独的 SQL 语句运行,Oracle 会在第一次插入时立即验证约束并发出ORA-00001 违反唯一约束。
我们只知道两种选择:
- 使约束可延迟
- 删除唯一约束
选项 2 不是很受欢迎,因为该约束提供了出色的保护,可以防止可能允许保存不一致数据的令人讨厌的应用程序错误。我们选择了选项 1。
不利的一面是,为监管此约束而创建的索引现在是非唯一索引,因此查询的效率可能会有所降低。我们已经决定这对这个特殊情况没有那么大的损害。另一个缺点(由 Gary 建议)是它可能会受到特定 Oracle 错误的影响——尽管我相信由于应用程序的工作方式,我们将(至少,大部分)免疫。
我们还应该考虑其他选择吗?
sql - 在 PL/SQL 中合并两个表中的两列
我在尝试合并 PL/SQL 中两个表中的两列时遇到了巨大的困难。我从早上 9:00 开始一直在做这件事,我放弃了,请帮助我。
目的
我想创建一个新表(称为 temp)。这将来自两个不同表中其他两列的信息合并。
到目前为止的代码
到目前为止,这段代码只给了我一个违反唯一约束的行为:
你能发现我做错了什么吗?(欢迎任何帮助)
oracle - 使用 JDBC 捕获和处理 ORA-00001 SQLException 的正确方法是什么?
我正在创建一个简单的表单,它通过使用 JDBC 的 Java Servlet 将输入的数据存储在一个非常简单的 Oracle 数据库表中。该表使用电子邮件地址作为主键。如果用户使用相同的电子邮件地址多次提交表单,则该execute
函数将失败并抛出 SQLException。异常的字符串如下:
在这种情况下,我想捕获这个异常并通过告诉用户不能使用同一个电子邮件地址多次提交表单来处理它。将 ORA-00001 与可能引发的任何其他 SQLExceptions 分开处理的正确方法是execute
什么?字符串比较显然可以在这里工作,但这似乎是一个糟糕的解决方案。