1

我有一个 Django1.1 项目,它适用于旧版 MySQL 数据库。我正在尝试将此项目迁移到 Oracle(xe 和 11g)。我们有两个迁移选项: - 使用 SQL 开发人员创建迁移 sql 脚本。- 使用 Django 固定装置。

使用 sql developer 的 sql 脚本创建的架构与从 syncdb 创建的架构不匹配。例如,Django 需要 TIMESTAMP 列,而 sql developer 创建 DATE 列。

使用带有 Django 设备的 syncdb 可能很棒,但是当尝试将 MySQL 设备加载到 Oracle 中时,使用 syncdb 后,我得到: IntegrityError:ORA-00001:违反唯一约束(USER.SYS_C004253)

如何找到造成完整性错误的部分?

更新:按照我尝试过的 django 邮件列表中的建议:

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

  2. 使用空架构创建了一个新的 Oracle 用户并将 db 连接切换到 Oracle(没有执行 syncdb)

  3. 使用以下命令将数据加载到 Oracle:python manage.py loaddata fixture.json

我在使用 loaddata 时没有收到错误,但是在运行服务器并导航到 localhost:8000 时,我得到:ORA-00942:表或视图不存在

谢谢

4

1 回答 1

0

您可以查询 oracle 信息模式(称为 Oracle 数据字典)来查询所有表上的约束列表,以识别所述约束的表名和列。

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

更新

由于安全要求,数据字典被分成不同的部分。用户 A 看不到来自用户 B 的表和约束。

如果您找不到信息,您可以使用具有全局访问权限的 dba 用户帐户并查询数据字典的 dba 部分。

connect system/<the_secret_password>
select TABLE_NAME, COLUMN_NAME from dba_cons_columns 
where CONSTRAINT_NAME = 'SYS_C004253' and OWNER = 'USER'
于 2010-04-21T07:28:18.510 回答