问题标签 [ora-02291]

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 投票
4 回答
74776 浏览

sql - SQL 错误:ORA-02291:完整性约束

我正在创建一个试图从外键访问值的数据库。我创建了两个下表

这是两张表。ComponentTypeComponentComponent是 的父实体TypeComponent,我正在尝试运行以下 INSERT 语句:

但它给了我错误

这是我迄今为止在 Oracle SQL 开发中的会话

0 投票
2 回答
762 浏览

hibernate - @OneToOne + 每个具体类的表 = 异常?

我是 Hibernate 的新手,我无法@OneToOne在我们的代码中运行。
经过大量阅读,我构建了一个隔离示例,并想向社区寻求帮助。

假设 3 个类:1 个抽象(Class_A)和 2 个继承自它(Class_B / Class_C)。Class_C 有一个指向 Class_B 的单向指针。
(我已经准备了一个图表,但该网站不会让我发布它:-/)。

笔记:

  1. 纯 Java + Hibernate 3.6.0 Final + Oracle 11g。
  2. 继承策略 =每个具体类的表
  3. hibernate.hbm2ddl.auto=update.
  4. 在我们的代码中 Class_B 需要它自己的表,因此没有@Embeddable.
  5. 在我们的代码中 Class_C 也是抽象的,不像这里的简化示例中所示。

代码

Class_A

Class_B

Class_C

休眠代码

问题

  1. insert(classC)Hibernate 只发出一条 SQL 来插入 Class_C。没有用于插入 Class_B 的 SQL。我在 Oracle 中看到 Class_C 的详细信息,但 Class_B 的表是空的。
    这是SQL:

    Hibernate:插入 Class_C (classB_myId, myString, myId) 值 (?, ?, ?)

  2. getTransaction().commit()它爆炸时

这:

问题请

  1. 为什么这不起作用......我做错了什么?
  2. 在我们的遗留代码中,应用程序分配唯一的 id 编号并且无意使用生成的 Id。因此不考虑@GenerateValue我们的。@Id这是失败的原因吗?
  3. @OneToOne(cascade = CascadeType.ALL)vs. @OneToOne+和有什么不一样@Cascade({CascadeType.ALL})

非常感谢!

  • 十种
0 投票
1 回答
5049 浏览

sql - ORA-02291: 违反完整性约束 (NAVY10.SYS_C00317513) - 未找到父键

我必须使用 INSERT SQL 语句和 SQL LOADER 实用程序创建表并插入数据。我正在使用 Oracle 10g。以下是创建表语句:

我使用 INSERT SQL 语句将数据插入到 Topic_C 表中,并使用 sql loader 实用程序将数据插入到其他 4 个表中。

所以我的问题是当我运行 sql loader 时,出现以下错误:

其他表工作得很好!

不知道哪里出错了,求指点 谢谢

0 投票
2 回答
7069 浏览

oracle - 在每列的过程中提高父键完整性约束

我在将数据插入表的包中有以下代码。

我能够获得未找到父密钥的异常。我怎样才能专门为每列获取违反约束的消息?例如,如果proj_id违反则引发异常,如果proj_code违反则引发另一个异常。

0 投票
0 回答
132 浏览

sql - Oracle SQL INSERT:我可以报告触发 Oracle 异常的值吗?

我正在编写我的第一个 PL/SQL 脚本。

在我正在编写的批处理脚本中,我将表 A 的“注释”字段中的数据插入到表 B 的具有各种完整性约束的列中(因此担心 ORA-12899 - 值太长或 ORA -02291 - 不允许值)

如果尝试将值插入表 B 引发异常,我想使用标准输出来报告不仅必须跳过插入,而且表 A 的哪些内容导致跳过插入。

我知道我可以在程序上循环遍历表 A 的数据,基本上一次调用 1 个 INSERT,报告任何引发该调用异常的数据的值。但如果可能的话,我想更贴近“让 SQL 做它的工作”的原则。

当直接 SQL “INSERT INTO {Table B} SELECT FROM {Table A}”引发异常时,有什么方法可以显示表 A 中的数据?

注意:我对数据库没有任何 DDL 权限,并且知道我无法获得任何权限;我只有 DML 和查询,如 INSERT/UPDATE/SELECT。因此,不幸的是,像“创建日志表”这样的解决方案是不可能的。

更新:我的问题的第二部分:阅读问题 1065829,我开始认为,即使是跳过无效插入并继续进行有效插入也是不可能的,直接 SQL 和没有 DDL 访问(我认为这是在写我上面的问题之前可能)。看起来我将不得不在遍历表 A 的行、一次执行一个 INSERT 调用以及请求特殊 DDL 权限之间做出选择。 这个对吗?

谢谢!

0 投票
1 回答
1032 浏览

sql - ORA-02291: 完整性约束

我很难使用ORA-02291: 完整性约束,我有一个表(TF_MODE),它链接到另一个表(PRODUCT),这样您就可以在 TF_MODE 中为各种产品设置一行。问题是我可以在 TF_MODE 表中完美插入 10 行,但是当我尝试插入第 11 行时(即当 ID = 11 时)我得到“ORA-02291:完整性约束”,即使外键确实存在PRODUCT 表中的第 11 个条目,奇怪的是,如果我将 ID 更改为 12/14,则查询成功,但对于某些 ID,它将不起作用,例如 999,1000 ;没有固定的模式无法正常工作,所以基本上问题出在少数 ID 值上而不是因为该外键的值不存在于父表中(实际上该值确实存在)。

我正在使用 Oracle 11g。

知道这种奇怪行为背后的原因是什么吗?

谢谢 !

更新:

没有触发器,唯一的检查约束是“IS NOT NULL”。

TF模式:

产品:

PRODUCT 表有很多列,为简洁起见已被省略。

插入语句(来自 java 应用程序):

我尝试从 sql developer 编辑东西,但结果相同,这是屏幕截图:

ID=11 不起作用

在此处输入图像描述

ID=12 作品

在此处输入图像描述

0 投票
2 回答
261 浏览

hibernate - 休眠 OneToMany 并出现 ORA-02291 错误

在 OneToMany 关系中保留一个实体及其子实体时遇到问题。这是我的两个实体:

现在生成 ORA-02291 错误的持久操作:

任何想法来解决这个问题?

谢谢大家!

0 投票
0 回答
93 浏览

ruby-on-rails - RoR OCIError: ORA-02291: 违反完整性约束 - 未找到父密钥

我是开发一个 RoR 应用程序,在我意外丢弃 4 个表之前,其中 2 个对另一个 2 个具有 FK,所以当我恢复它并使表“稳定”时,我尝试插入一条包含来自 pacientes、hclinicos 和 dientes 的 fk 的记录

FELIPE是数据库,ODONTODIAGRAMAS是我要插入的表,DIENTE是另一个包含多条记录的表,我将它们呈现在hclinico_new视图中以将它们保存在另一个表中

这就是我渲染DIENTES以保存它们的方式

当然它们不止1。也许它是数据库组合中的一个错误?奇怪的是,这不是唯一在另一个表中插入约束的表,所以我不明白为什么我会收到这个错误

0 投票
2 回答
1354 浏览

sql - 创建发票表条目的存储过程

我必须创建一个存储过程来创建发票表条目。该过程应允许用户通过提供新的发票编号 x 和客户 ID y 来插入记录。日期应为当前系统日期,小计、税款和总计字段应为 0。

我为这个问题写了这段代码:

该调用引发错误:

我做错了什么,有没有更好的方法可以做到这一点?

0 投票
2 回答
146 浏览

sql - SQL 错误 02291 - 外键问题

我们正在尝试将数据插入到我们的表中,但是我们遇到了错误并且看不到问题。这就是我们得到的——

INSERT INTO Item(Manifest_barcode,Trip_ID,Item_weight,Pickup_customer,Delivery_customer,Category) VALUES (159601450,73495,2156,166,184,'A') 错误报告 - SQL 错误:ORA-02291: 违反完整性约束 (HR.SYS_C009055) - 父级未找到密钥 02291. 00000 - “违反完整性约束 (%s.%s) - 未找到父密钥”

我们检查了表格的创建顺序,据我们所知,一切都在正确的位置。所有外键似乎也是正确的。

这就是我们删除/创建表格的方式 -

这就是插入项目的方式 -

有人有什么建议吗?