ORA-00904: "IDENTITY_COLUMN": 使用 INSPECTDB DJANGO 的标识符无效错误

Posted

技术标签:

【中文标题】ORA-00904: "IDENTITY_COLUMN": 使用 INSPECTDB DJANGO 的标识符无效错误【英文标题】:ORA-00904: "IDENTITY_COLUMN": invalid identifier error using INSPECTDB DJANGO 【发布时间】:2019-01-06 23:27:43 【问题描述】:

我在Oracle 11.2 中有一个现有数据库。

我正在尝试使用djangoinspectdb 实用程序来自动创建模型,但出现错误:

ORA-00904: "IDENTITY_COLUMN": invalid identifier

在任何表中都没有名为IDENTITY_COLUMN 的列,并且由于我没有直接访问数据库,因此不可能拼写错误的列名或访问错误的列。

如果有人可以就解决此错误的解决方法提供指导,那将非常有帮助。

【问题讨论】:

【参考方案1】:

我不确定这是否可能。

docs别提Oracle

inspectdb 适用于PostgreSQLmysqlSQLite

但用户说他们成功了,例如this comment in a previous question。有关一些提示,另请参阅 this older question。

【讨论】:

docs.djangoproject.com/en/2.2/ref/django-admin/… 明确提到了 oracle db 的行为方式,因此可能支持这一点。但我意识到 django 2.2 不支持 Oracle DB 版本 11。这可能是问题【参考方案2】:

我在使用 Oracle 11.2 时也遇到了类似的问题

我暂时将 Django===2.1 降级为 Django===1.11.13 以运行 inspectdb 作为解决方法,因为无论如何我的旧模型都需要手动清理,但这是开始逆向工程模型的好地方来自旧版数据库。

【讨论】:

【参考方案3】:

同样的事情发生在我身上。首先将您的 django 降级为较低版本(1.11.22)并运行

python manage.py inspectdb > your_app_name/models.py

然后升级到您使用的任何版本。我使用的是 3.0.4

【讨论】:

以上是关于ORA-00904: "IDENTITY_COLUMN": 使用 INSPECTDB DJANGO 的标识符无效错误的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00904: 无效标识符 00904. 00000 - "%s: 无效标识符"

ORA-00904: "FORMAT": 无效标识符

ORA-00904: "CEILING": ORACLE 11G 中的标识符无效

ORA-00904: "DAYS": 无效标识符

ORA-00904: "pass": 无效的标识符

ORA-00904: "PREV_TEMP": 带有 LAG 函数的无效标识符