【问题标题】:ORA-01400: Can't insert NULL into ("repository name"."MD_PROJECTS"."ID")ORA-01400: 无法将 NULL 插入 ("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 不同的空字符串。 stackoverflow.com/questions/1267999/…
  • 我没有尝试插入任何内容,只是尝试迁移数据库。如果我放弃对主键“id”的约束,它只会给出更多错误。

标签: mysql oracle oracle-sqldeveloper database-migration oracle12c


【解决方案1】:

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

祝你好运。

【讨论】:

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

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

【讨论】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2018-11-08
    • 2011-08-23
    • 2013-02-21
    • 2016-08-21
    • 2016-06-21
    • 2021-12-03
    相关资源
    最近更新 更多