Unable to create the django_migrations table (ORA-00907: missing right parenthesis)

1,614 views
Skip to first unread message

tossouwisdom

unread,
Apr 27, 2019, 3:56:34 PM4/27/19
to Django users
Django 2.2.2
Cx_oracle 7.2
base Oracle 11g

When I run the django migrate commande, i have error django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table (ORA-00907: missing right parenthesis)
  Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Traceback (most recent call last):
  File "C:\Python37-32\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
    return self.cursor.execute(sql)
  File "C:\Python37-32\lib\site-packages\django\db\backends\oracle\base.py", line 510, in execute
    return self.cursor.execute(query, self._param_generator(params))
cx_Oracle.DatabaseError: ORA-00907: missing right parenthesis

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Python37-32\lib\site-packages\django\db\migrations\recorder.py", line 67, in ensure_schema
    editor.create_model(self.Migration)
  File "C:\Python37-32\lib\site-packages\django\db\backends\base\schema.py", line 307, in create_model
    self.execute(sql, params or None)
  File "C:\Python37-32\lib\site-packages\django\db\backends\base\schema.py", line 137, in execute
    cursor.execute(sql, params)
  File "C:\Python37-32\lib\site-packages\django\db\backends\utils.py", line 99, in execute
    return super().execute(sql, params)
  File "C:\Python37-32\lib\site-packages\django\db\backends\utils.py", line 67, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "C:\Python37-32\lib\site-packages\django\db\backends\utils.py", line 76, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "C:\Python37-32\lib\site-packages\django\db\backends\utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Python37-32\lib\site-packages\django\db\utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Python37-32\lib\site-packages\django\db\backends\utils.py", line 82, in _execute
    return self.cursor.execute(sql)
  File "C:\Python37-32\lib\site-packages\django\db\backends\oracle\base.py", line 510, in execute
    return self.cursor.execute(query, self._param_generator(params))
django.db.utils.DatabaseError: ORA-00907: missing right parenthesis

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "manage.py", line 21, in <module>
    main()
  File "manage.py", line 17, in main
    execute_from_command_line(sys.argv)
  File "C:\Python37-32\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
    utility.execute()
  File "C:\Python37-32\lib\site-packages\django\core\management\__init__.py", line 375, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python37-32\lib\site-packages\django\core\management\base.py", line 323, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Python37-32\lib\site-packages\django\core\management\base.py", line 364, in execute
    output = self.handle(*args, **options)
  File "C:\Python37-32\lib\site-packages\django\core\management\base.py", line 83, in wrapped
    res = handle_func(*args, **kwargs)
  File "C:\Python37-32\lib\site-packages\django\core\management\commands\migrate.py", line 234, in handle
    fake_initial=fake_initial,
  File "C:\Python37-32\lib\site-packages\django\db\migrations\executor.py", line 91, in migrate
    self.recorder.ensure_schema()
  File "C:\Python37-32\lib\site-packages\django\db\migrations\recorder.py", line 69, in ensure_schema
    raise MigrationSchemaMissing("Unable to create the django_migrations table (%s)" % exc)
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table (ORA-00907: missing right parenthesis)

Joel Mathew

unread,
Apr 27, 2019, 4:15:32 PM4/27/19
to django...@googlegroups.com
What's the error?
Sincerely yours,

 Joel G Mathew



--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/dac2cda6-2543-4664-aea5-025473ecc3e5%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

tossouwisdom

unread,
Apr 27, 2019, 4:41:51 PM4/27/19
to Django users
django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table (ORA-00907: missing right parenthesis)

Rob W

unread,
Apr 27, 2019, 5:09:58 PM4/27/19
to django...@googlegroups.com
Can you send a copy of your models.py or a copy/paste of the class that shows the error?



--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.

chirag soni

unread,
Apr 28, 2019, 2:52:51 AM4/28/19
to django...@googlegroups.com
After executive these two commands:

py manage.py makemigrations
py manage.py migrate

Still you face the problem then go to migrations folder and delete the associated(or all) migrations then re execute the above commands. 

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.

Jani Tiainen

unread,
Apr 28, 2019, 5:59:45 AM4/28/19
to django...@googlegroups.com
Hi.

Django 2.2 supports Oracle 12.1+. Oracle 11g support was dropped with Django 2.0. If you want to use Oracle 11g (which is out of support anyway from Oracle) you either need to downgrade to Django 1.11 and cx_Oracle 6.4.1

I really suggest you to update at least latest Oracle 12.2 which is still supported by Oracle.

--

Jani Tiainen

unread,
Apr 28, 2019, 6:06:29 AM4/28/19
to django...@googlegroups.com
And why you get the error is that Oracle 12 does have new identity column (generates primary keys without explicit trigger) which was taken into use in Django. Oracle 11g doesn't have it and thus you get pretty strange errors when you try to create tables that don't have valid 11g SQL syntax.
--
Jani Tiainen
Software wizard


Always open for short term jobs or contracts to work with Django.

tossouwisdom

unread,
Apr 29, 2019, 11:50:22 AM4/29/19
to Django users
Bonjour tout le monde et merci pour vous différents retours. J'ai donc pris une la version 1.11 de django et 6.4.1 de cx_Oracle car ne pouvant pas utiliser la version 12 d'Oracle. Je travaille sur une base qui est utilisée en prod. Ensuite après avoir lancé la commande migrate je me suis confronté à un autre problème : 
  File "C:\Python37-32\lib\site-packages\django\contrib\admin\options.py", line 12, in <module>
    from django.contrib.admin import helpers, widgets
  File "C:\Python37-32\lib\site-packages\django\contrib\admin\widgets.py", line 151
    '%s=%s' % (k, v) for k, v in params.items()

Pour résoudre ce dernier j'ai enlevé une virgule à la fin de l'instruction dans le fichier widgets.py ligne 152 (https://code.djangoproject.com/ticket/29565)
Ensuite j'ai encore eu un autre problème : 
  File "C:\Python37-32\lib\site-packages\django\db\backends\oracle\base.py", line 404, in __init__
    self.cursor.numbersAsStrings = True
AttributeError: 'cx_Oracle.Cursor' object has no attribute 'numbersAsStrings'

Pour résoudre ce problème j'ai mis en commentaire l’instruction "self.cursor.numbersAsStrings = True" à la ligne 404 du fichier "base.py" et les tables ont été créées. Grand Merci encore une fois.

  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK

Le samedi 27 avril 2019 19:56:34 UTC, tossouwisdom a écrit :
Reply all
Reply to author
Forward
0 new messages