django.db.utils.DatabaseError:ORA-30673:要修改的列不是标识列

时间:2018-04-28 17:28:46

标签: python django oracle

谢谢大家, 我有一个django项目,这是我的环境:

数据库: Oracle Database 12c企业版12.1.0.2.0版 - 64位生产

的Python : Python 3.5.1rc1 CX-甲骨文== 6.3 Django的== 2.0.4

我正在尝试这个:

 python manage.py test

我收到此错误:

django.db.utils.DatabaseError: ORA-30673: column to be modified is not an identity column

感谢。

1 个答案:

答案 0 :(得分:2)

您似乎正在尝试使用ALTER TABLE命令将列设置为标识列。但是,甲骨文告诉你,你不能这样做。

一个例子:

创建一个表格:

create table test (id number);

此命令引发ORA-30673:

alter table test modify id number generated by default on null as identity;

您应该创建一个新的标识列:

alter table test add id_new number generated by default on null as identity;

然后数据复制到新列中,如有必要:

update test set id_new = id;

删除旧ID列:

alter table test drop column id;

将新列重命名为旧名称:

alter table test rename column id_new to id;

如果旧ID列是主键,则会出现问题,用于强制执行外键约束。