这是我的开发环境:
我无法执行migrate(django manage.py migration),因为Django正在创建适用于Oracle 12c的sql。但我用的是11克
例如,django尝试执行以下命令:
SELECT
CASE WHEN identity_column = 'YES' THEN 1 ELSE 0 END
FROM user_tab_cols
WHERE table_name = 'DJANGO_CONTENT_TYPE' AND
column_name = 'NAME';
('DJANGO_CONTENT_TYPE', 'NAME');
args=['DJANGO_CONTENT_TYPE', 'NAME']
Run Code Online (Sandbox Code Playgroud)
但是该列identity_column在oracle 11g上不可用。
如何使django使用11g语法?
编辑:
追溯异常..\Lib\site-packages\django\db\backends\oracle\schema.py(在方法_is_identity_column151行中):
cursor.execute("""
SELECT
CASE WHEN identity_column = 'YES' THEN 1 ELSE 0 END
FROM user_tab_cols
WHERE table_name = %s AND
column_name = %s
""", [self.normalize_name(table_name), self.normalize_name(column_name)])
Run Code Online (Sandbox Code Playgroud)
因此语法是硬编码的。这是否意味着Django 2.0适用于Oracle 12c及更高版本?
从django 2.0的发行说明中(重点介绍):
对Oracle 11.2的上游支持的终止日期是2020年12月。Django 1.11的支持将一直持续到2020年4月,直到这一日期为止。 Django 2.0正式支持Oracle 12.1+。
因此,为了支持任何其他版本的Oracle,您应该降级到1.11
| 归档时间: |
|
| 查看次数: |
2796 次 |
| 最近记录: |