¿Cómo hacer que Django 2.0 use la sintaxis Oracle 11g en lugar de 12c?
Este es mi entorno de desarrollo:
Windows 7 (x64)Python 3.6.3 64bit (entorno virtual)Django 2.0cx_Oracle 6.1Oracle 11.2 Enterprise Edition 64 bit (en máquina remota)Estoy fallando amigrate
(djangomanage.py migrate) porque Django está creando sql adecuado para Oracle 12c; pero estoy usando 11g.
Por ejemplo, django intenta ejecutar esto:
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']
Pero la columnaidentity_column
no está disponible en Oracle 11g.
¿Cómo puedo hacer que django use la sintaxis 11g?
EDITAR:
Rastreando la excepción, encontré esto en..\Lib\site-packages\django\db\backends\oracle\schema.py
(método_is_identity_column
, línea 151):
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)])
Entonces la sintaxis está codificada. ¿Significa esto que Django 2.0 es para Oracle 12c en adelante?