【问题标题】:DdlUtils: defering insertionDdlUtils:延迟插入
【发布时间】:2011-06-27 11:49:01
【问题描述】:

为了将数据库从 oracle 迁移到 mysql,我正在使用 ddlutils。迁移架构适用于我的目的,但由于缺少行,插入数据失败。日志文件的以下摘录对此进行了解释:

[ddlToDatabase] About to execute SQL: INSERT INTO `RECORDSTATUS` (`NAME_ID`, RECORDSTATUS_ID`, `NAME`, `SORTVALUE`) VALUES (?, ?, ?, ?)
[ddlToDatabase] Inserted bean RECORDSTATUS:RECORDSTATUS_ID=0
...
[ddlToDatabase] Defering insertion of row NAME:LANGUAGE_ID=0;NAME_ID=5941 because it is waiting for:
[ddlToDatabase]   RECORDSTATUS:RECORDSTATUS_ID=0

在数据库中,有一行 RECORDSTATUS_ID=0。有人遇到同样的问题吗?有人有什么想法,问题是什么?

【问题讨论】:

    标签: java mysql oracle ddlutils


    【解决方案1】:

    从 MySql 迁移到 DerbyDB 时,我遇到了类似的问题。我的情况是,实际问题是 DDLUtils 只处理那些针对主键的外键。

    因此,如果您有包含一些唯一非主键字段的 MASTER 表,并且您有引用(外键)该唯一非主键字段的 DETAILS 表,DDLUtils 无法将 DETAILS 记录链接到 MASTER,因此无法插入 DETAIL全部记录。

    这是 DDLUtils 1.0 版中的情况。

    我对代码进行了一些快速(可能是肮脏的)修改,它似乎解决了这个问题。修改版可以在这里下载(包括源代码):DllUtils-1.0_mod_with_src.jar。您可以自行承担使用它的风险。

    最好的问候 卡里·苏拉卡

    【讨论】:

      【解决方案2】:
      INSERT INTO `RECORDSTATUS` (`NAME_ID`, RECORDSTATUS_ID`, `NAME`, `SORTVALUE`) VALUES 
      

      应该是:

      INSERT INTO `RECORDSTATUS` (`NAME_ID`, `RECORDSTATUS_ID`, `NAME`, `SORTVALUE`) VALUES 
      

      【讨论】:

        猜你喜欢
        • 2012-09-15
        • 1970-01-01
        • 1970-01-01
        • 2011-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-27
        • 2017-10-25
        相关资源
        最近更新 更多