sql developer -data modeller 生成的 DDL 包括已经提交到数据库中的更改

sql developer -data modeller generated DDL includes changes already committed into database

使用 sql developer 19.4 中嵌入的数据建模器针对 oracle 12c 数据库。

我在数据建模器 erd 图中添加了几个外键,然后单击 "syncrhonize data modeller with model";然后我注意到在生成的 DDL 中,除了我的合法更改之外,DDL 还包含与数据库中已经存在的更改相关的其他 SQL;无论如何,我通过删除不需要的更改并应用并提交我的更改来修改 DDL。然后我 运行 再次进行相同的比较, "Compare Models" window 正确地显示没有变化但是...... DDL 已经应用了相同的变化并且已经存在于数据库中。

我还通过将模型与 erd 进行比较来恢复比较,然后点击 "merge" 认为这是某种缓存内存等的问题。但同样的问题在这里:"Compare Models" 查看没有正确显示任何错误,但 DDL 包含更改 ??

以及在 DDL 下使用数据库中已存在的更改脚本。

ALTER TABLE gasgendev.audit_errors
    ADD CONSTRAINT audit_errors_look_audit_types_fk FOREIGN KEY ( audit_type )
        REFERENCES gasgendev.look_audit_types ( audit_type_id )
            ON DELETE CASCADE
    NOT DEFERRABLE ENABLE VALIDATE;

ALTER TABLE gasgendev.audit_logs
    ADD CONSTRAINT audit_logs_look_audit_types_fk FOREIGN KEY ( audit_type )
        REFERENCES gasgendev.look_audit_types ( audit_type_id )
            ON DELETE CASCADE
    NOT DEFERRABLE ENABLE VALIDATE;

ALTER TABLE gasgendev.halo_inputs
    ADD CONSTRAINT halo_inputs_look_assets_fk FOREIGN KEY ( look_assets_l_asset_id )
        REFERENCES gasgendev.look_assets ( l_asset_id )
            ON DELETE CASCADE
    NOT DEFERRABLE ENABLE VALIDATE;

ALTER TABLE gasgendev.halo_inputs
    ADD CONSTRAINT halo_inputs_look_datasets_fk FOREIGN KEY ( dataset_id )
        REFERENCES gasgendev.look_datasets ( l_dataset_id )
            ON DELETE CASCADE
    NOT DEFERRABLE ENABLE VALIDATE;

ALTER TABLE gasgendev.manual_inputs
    ADD CONSTRAINT manual_inputs_look_manual_inputs_fk FOREIGN KEY ( look_manual_inputs_look_manual_input_id )
        REFERENCES gasgendev.look_manual_inputs ( look_manual_input_id )
            ON DELETE CASCADE
    NOT DEFERRABLE ENABLE VALIDATE;

ALTER TABLE gasgendev.manual_inputs
    ADD CONSTRAINT manual_inputs_look_datasets_fk FOREIGN KEY ( dataset_id )
        REFERENCES gasgendev.look_datasets ( l_dataset_id )
            ON DELETE CASCADE
    NOT DEFERRABLE ENABLE VALIDATE;

当然,如果我 运行 在 SQL 开发人员中使用该脚本,我会收到错误消息,指出这些约束已经存在。

谁能告诉我我做错了什么?

此错误意味着您的 Data Modeller 或 SQL Dev 已过时,导致他们无法合作。限制在那里,但您的 DM 没有识别它们。更新您的系统,如果这不起作用,请手动重新安装每个系统。我以前见过这种情况发生过一次,但并不漂亮。希望这能解决您的问题!