Django使用Oracle DB, 表名输入正确, 但是一直报错:
#Unable to inspect table ‘xxxxxx’
#The error was: ORA-00904: “USER_TAB_COLS”.“IDENTITY_COLUMN”: invalid identifier
网上查了很久也找不到具体的解决方法, 最终找到出错位置, 发现里面的SQL执行有问题, 可能跟我的登录用户的权限有关系.
打开这个文件
虚拟环境\Lib\site-packages\django\db\backends\oracle\introspection.py
找到get_table_list这个方法
修改表名
user_tables修改为all_tables
user_views修改为all_views
user_mviews修改为all_mviews
最终的SQL是
cursor.execute(
"""
SELECT table_name, 't'
FROM all_tables
WHERE
NOT EXISTS (
SELECT 1
FROM all_mviews
WHERE all_mviews.mview_name = all_tables.table_name
)
UNION ALL
SELECT view_name, 'v' FROM all_views
UNION ALL
SELECT mview_name, 'v' FROM all_mviews
"""
)
再运行python manage.py inspectdb 正常