问题标签 [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.

0 投票
3 回答
1466 浏览

oracle - 相同的 Oracle 数据库设置:其中一个异常

编辑:查看这个问题的结尾,了解导致错误的原因以及我是如何发现的。

当我运行一个将数据批量插入到 Oracle 数据库中的应用程序时,我从 Hibernate 中抛出了一个非常奇怪的异常。错误来自 Oracle 数据库ORA-00001,它

" 表示已尝试插入具有重复(唯一)键的记录。如果更新现有记录以生成重复(唯一)键,也会生成此错误。

该错误很奇怪,因为我在另一台机器上创建了相同的表(完全相同的定义),如果我通过我的应用程序使用它,我不会得到相同的错误。并且所有数据都被插入到数据库中,所以没有什么被真正拒绝。

两种设置之间必须有一些不同,但我能看到的唯一不同的是我在发布时得到的横幅输出

给我带来麻烦的数据库: Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
有效的数据库: Oracle Database 10g Release 10.2.0.3.0 - 64bit Production

表定义、输入和我编写的应用程序对两者都是相同的。所涉及的表基本上是一个具有复合 id(serviceid、date、value1、value2)的四列表 - 没什么特别的。

关于什么可能是错的任何想法?我已经开始清理几次,删除两个表以平等地开始,但我仍然从数据库中得到错误。

更多的输出:

我如何找出导致问题的原因

感谢 APC 和 ik_zelf,我能够查明这个错误的根本原因。事实证明,Quartz 调度程序被错误地配置为生产数据库(出现错误的地方)。对于针对非故障 oracle 服务器<cronTriggerExpression>0/5 * * * * ?</cronTriggerExpression>运行的作业,我每五秒运行一次批处理作业。我认为对于另一个 oracle 服务器来说,每分钟一次就足够了,并使用 * */1 * * * ? 设置了石英调度程序。事实证明这是错误的,而不是每分钟运行一次,而是每秒运行一次!

每个作业大约需要 1.5-2 秒,因此两个或多个作业同时运行,从而导致服务器上同时插入。因此,我没有插入 529 个元素,而是插入了 1000 到 2000 个元素。将 crontrigger 表达式更改为与另一个相同的表达式,每五秒运行一次,解决了该问题。

为了找出问题所在,我必须在 hibernate.cfg.xml 中设置 true 并禁用表上的主键约束。

0 投票
3 回答
903 浏览

sql - 触发器创建问题(来自主键序列)

我创建了一个从 1 开始的序列,没有最大值我已经创建了一个自动插入主键的触发器,它在下面我还为表设置了一个约束,其中主键必须是唯一的并且不为空

结果:

第 1 行的错误:
ORA-00001:违反了唯一约束 (USER.PK_MY_TEMP)

表 MY_TEMP 已经包含从 1 到 338 的值,来自 Id 字段

那么,我应该如何在触发器和插入语句中处理这个问题。

0 投票
1 回答
2940 浏览

oracle - ORA-00001: 违反唯一约束 (DEV.X_PK)

我有一个将数据发送到 Web 服务的 java 代码,以及一个使用该数据的 portlet。

java代理发送的数据被放置在TMP表中,合并过程将其合并到portlet使用的MAIN表中。

运行 java 代理时出现以下错误,尽管我确保没有发送重复的主键:

我尝试关闭主键约束,但徒劳无功。然后我尝试删除所有使用的表,并再次创建它们。但还是没有运气...

有趣的是,我能够手动将数据插入 TMP 并运行合并过程,并且没有错误。

任何帮助表示赞赏...

0 投票
1 回答
569 浏览

hibernate - 休眠错误机制

我正在用hibernate + spring创建一个网站。在我的网站管理员中有一个用于添加工作的工作表。职位名称在数据库和休眠 xml 文件中声明为唯一。

当我尝试添加一个已经存在的职位时,由于独特的约束,作业没有成功添加,并且我的日志中出现异常。

我想知道有没有办法摆脱这个异常并显示一些用户友好的消息,比如“工作已经存在”?

我不想在插入之前扫描整个表,所以请建议我任何其他方式

0 投票
4 回答
3257 浏览

oracle - oracle 序列变得混乱,因此插入失败?

我正在使用序列将域对象实例保存在我的 oracle 数据库中。我对数据库中的每个表都有一个序列。例如,当我在用户或资源上使用保存功能时,它在第一次尝试时创建了一个新资源,但使用的 ID 是 70?该序列显示了正确的下一个数字 - 42,因为表中的最大 id 为 41。为什么 id=70 用于插入新资源?

同样从下一次尝试所有插入都失败并出现此错误

不知道出了什么问题,因为这是在代码重组之后发生的......我们将代码移动到新包中......

编辑:我找到了原因,请参阅我的回复..谢谢大家

0 投票
1 回答
39242 浏览

oracle - 约束违反异常 ORA-00001

我正在使用 Oracle 数据库。我们在调用我们的服务时经常看到失败。当我查看日志时,我在表上看到以下异常

java.sql.BatchUpdateException:ORA-00001:违反了唯一约束 (DBSCHEMA.IDX_CO_DETAILS)。

我检查了表上的索引以获取索引名称 DBSCHEMA.IDX_CO_DETAILS 。

它不包括任何列(INCLUDE_COLUMN 为空)。我怎么知道这个约束是为了什么?是主键约束吗?

我们将休眠用于 ORM。下面是休眠上下文中的回溯

0 投票
2 回答
3518 浏览

sql - ORA-00001: 唯一约束检查​​数据源

执行过程时出现 ORA-00001:唯一约束错误。我检查了表名,它有四个主键。(a.sr_date, a.int_key, b.cli_no, b.act_no) from table1 a, table2 b 我想知道我将如何检查源表,以便知道导致问题。感谢任何帮助。谢谢你。

0 投票
1 回答
2036 浏览

java - ORA 000001 违反唯一约束

我对具有 dep_id 和 emp_id 主键的表有一个插入语句。我的 java 程序为新记录生成一个新的 emp_id 并插入它。例如,如果我有 dep_id = 100 和 emp_id = 25,我无法插入 dep_id = 100 和 emp_id = 26 的记录,但我可以插入 dep_id = 100 和 emp_id = 27 的记录。我通过检查如果存在某种组合(dep_id = 100 和 emp_id = 26),则选择语句。没有那种东西。我仍然从 dep_id = 100 和 emp_id = 26 处删除并提交只是为了确定,然后尝试插入,但它仍然不起作用。可能有什么问题?以下是代码:修改后的 DDL 和 Insert 语句(从 Eclipse 控制台获得)

)

请注意,Insert 语句本身有另一个 Insert 语句作为值。这个插入语句(主要的)在应用程序的许多其他地方使用。另外,我使用 100 的 dep_id 是一个测试 dep_id。除了我,没有人使用它。

0 投票
1 回答
5903 浏览

plsql - PlSQL 触发错误 ORA-0000 ORA-06512:

我一周创建了这个触发器,但没有编译错误但是当我输入一条记录时,EMP_REPORT 它会弹出一条错误消息说

我无法弄清楚我哪里出错了。请帮助我 :(

请注意,我无法删除约束及其主键

0 投票
1 回答
8153 浏览

oracle - 由于 sequencel.nextval,PL/SQL(INSERT/UPDATE)触发器中的唯一约束违反错误

我想使用触发器(pl/sql oracle 10g)将记录插入/更新到另一个表(MICL_SUPERVISORS)。

当触发器触发时,它给出一个错误

ORA-00001: 违反了唯一约束。

我知道它发生是因为我想SUPID从序列中添加

这发生在一个循环中。

SUPID 列是我表中的主键(MICL_SUPERVISOR)。所以我不能放弃那个约束。

一旦我尝试自动递增,但它需要很长时间,而且效果不佳而且速度很慢。我在这张表中有数千条记录。我这样做了

由于这个错误,我做了一个小的研究,发现我们不能在触发器中使用 seq.nextval。所以我的问题是有没有简单、准确的方法来实现这一目标?

这是代码(这一切都发生在if 子句else 部分工作正常。请注意我使用了游标,在打开游标内这一切都发生了)

如果有什么不清楚的地方问我,我会进一步解释这个场景,我希望有人能帮助解决这个问题