我有一个Django1.1项目,可与旧的MySQL DB一起使用。我正在尝试将该项目迁移到Oracle(XE和11G)。我们有两个迁移的选项: - 使用SQL开发人员创建迁移SQL脚本。 - 使用Django固定装置。

使用SQL Developer创建的SQL脚本创建的架构与SynCDB创建的架构不匹配。例如,Django期望时间戳列,而SQL开发人员创建日期列。

将SynCDB与Django固定装置一起使用可能很棒,但是在使用SynCDB后尝试将MySQL固定装置加载到Oracle中时,我会得到:intectityError:ora-00001:unique constraint(user.sys_c004253)

如何找到什么部分创建完整性错误?

更新:遵循我尝试过的Django邮件列表中的建议:

  1. 连接到mysql时转储所有内容:python manage.py dumpdata> fixture.json

  2. 使用空架构创建了一个新的Oracle用户,然后将DB连接切换为Oracle(不做SynCDB)

  3. loaddata到Oracle带有:Python Manage.py Loaddata fixture.json

使用LoadData时,我不会遇到错误

谢谢

有帮助吗?

解决方案

您可以查询Oracle信息架构(称为Oracle DataDictionary)以查询所有表上的约束列表,以识别上述约束的表名和列。

select TABLE_NAME, COLUMN_NAME from user_cons_columns where CONSTRAINT_NAME = 'SYS_C004253'

更新

由于安全要求,数据字典分为不同的部分。用户A无法看到用户B的表和约束。

如果您找不到信息,则可以使用DBA用户通行证,这些dba用户通行证具有全局访问权限,并查询了数据字典的DBA部分。

connect system/<the_secret_password>
select TABLE_NAME, COLUMN_NAME from dba_cons_columns 
where CONSTRAINT_NAME = 'SYS_C004253' and OWNER = 'USER'
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top