ORA-01400: 无法将 NULL 插入 ("repository name"."MD_PROJECTS"."ID")

Posted

技术标签:

【中文标题】ORA-01400: 无法将 NULL 插入 ("repository name"."MD_PROJECTS"."ID")【英文标题】:ORA-01400: Can't insert NULL into ("repository name"."MD_PROJECTS"."ID") 【发布时间】:2015-06-04 19:26:47 【问题描述】:

我们正在使用 SQL Developer 4.0.3.16 将 mysql 数据库迁移到 Oracle 12c 数据库。

创建存储库后出现错误(无法创建存储库,因为它仍然存在,请先将其删除。)。没有存储库,所以我们再次尝试,它成功了,存储库已创建。

现在我们已连接到我们的源数据库 (MySQL)、我们的目标数据库 (Oracle)(见图),并且我们与我们的迁移用户 (migrepo) 建立了另一个连接到我们的目标数据库。

现在我们一遍又一遍地遇到以下错误..:

(英文:ORA-01400: Can't insert NULL into ("MIGREPO"."MD_PROJECTS"."ID"))

谁能帮助我们?

【问题讨论】:

您是在移动数据还是架构结构和数据? 架构结构和数据 如果该列是主键,或者即使它只有一个NOT NULL 约束,您也无法将NULL 插入其中。看看表的约束,您可能必须删除一个或多个才能完成您想要完成的任务。 另一种可能性是您尝试插入的不是显式的NULL 值,而是一个空字符串。 Oracle 认为空字符串''NULL 相同。另一方面,MySQL 确实支持与NULLs 不同的空字符串。 ***.com/questions/1267999/… 我没有尝试插入任何内容,只是尝试迁移数据库。如果我放弃对主键“id”的约束,它只会给出更多错误。 【参考方案1】:

您的表 MIGREPO.MD_PROJECTS 上有一个名为 ID 的列,它要么是主键,要么具有 NOT NULL 约束(或两者兼而有之)。正在运行的代码中的某些内容试图将 NULL 放入此 ID 列,这是约束不允许的。

祝你好运。

【讨论】:

谢谢,有人使用表 MD_PROJECTS 吗? (它是迁移存储库中的标准表..) 我在使用 SQL Developer 版本 18.4.0.376 时遇到了同样的错误【参考方案2】:

已解决,我试图将其迁移为 sysdba。创建新用户并成功迁移。

【讨论】:

能否详细说明解决方案?【参考方案3】:

最好尝试将您的 Oracle 列更改为 NOT NULL,并在转换时,选择选项为 APPEND 以获取如果表存在的情况。它会解决问题。

【讨论】:

以上是关于ORA-01400: 无法将 NULL 插入 ("repository name"."MD_PROJECTS"."ID")的主要内容,如果未能解决你的问题,请参考以下文章

ORA-01400: 当使用 @onetomany 映射并且在子端具有复合主键时,无法将 NULL 插入

ORA-01400: 无法将 NULL 插入 ("repository name"."MD_PROJECTS"."ID")

Cause: java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("MESIRJ"."TMMIS11"."P

我用的是oracle数据库,ORA-01400: 无法将 NULL 插入 ("SYSTEM"."PIZZA"."FACET")

goldengate OCI Error ORA-01400: cannot insert NULL into

德瓦特甲骨文。插入并返回 ID