Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support unique nullable constraints #144

Closed

Conversation

peakwinter
Copy link

This is another attempt at a fix for supporting unique nullable constraints with this library.

Based on work in #43 and resolves issues we encountered with adding/deleting these constraints through Django migrations.

@michiya
Copy link
Owner

michiya commented Feb 24, 2018

Thank you for the PR but I have found that the change causes the following errors on a Django test below.

Testing against Django installed in 'C:\Users\michiya\workspace\Django-2.0.2\django'
Importing application m2m_through_regress
Creating test database for alias 'default' ('test_defaultdb')...
Operations to perform:
  Synchronize unmigrated apps: auth, contenttypes, m2m_through_regress, messages, sessions, staticfiles
  Apply all migrations: admin, sites
Synchronizing apps without migrations:
  Creating tables...
    Creating table django_content_type
    Creating table auth_permission
    Creating table auth_group
    Creating table auth_user
    Creating table django_session
    Creating table m2m_through_regress_membership
    Creating table m2m_through_regress_usermembership
    Creating table m2m_through_regress_person
    Creating table m2m_through_regress_group
    Creating table m2m_through_regress_a
    Creating table m2m_through_regress_throughbase
    Creating table m2m_through_regress_through
    Creating table m2m_through_regress_b
    Creating table m2m_through_regress_car
    Creating table m2m_through_regress_driver
    Creating table m2m_through_regress_cardriver
    Creating table m2m_through_regress_event
    Creating table m2m_through_regress_competitor
    Creating table m2m_through_regress_individualcompetitor
    Creating table m2m_through_regress_competingteam
    Running deferred SQL...
Traceback (most recent call last):
  File "C:\Users\michiya\workspace\Django-2.0.2\django\db\backends\utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\michiya\workspace\django-pyodbc-azure\sql_server\pyodbc\base.py", line 546, in execute
    return self.cursor.execute(sql, params)
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]There are no primary or candidate keys in the referenced table 'm2m_through_regress_car' that match the referencing column list in the foreign key 'm2m_through_regress_cardriver_car_id_02e107b2_fk_m2m_through_regress_car_make'. (1776) (SQLExecDirectW); [42000] [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Could not create constraint or index. See previous errors. (1750)")

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

Traceback (most recent call last):
  File "C:\Users\michiya\workspace\Django-2.0.2\tests\runtests.py", line 481, in <module>
    options.exclude_tags,
  File "C:\Users\michiya\workspace\Django-2.0.2\tests\runtests.py", line 285, in django_tests
    extra_tests=extra_tests,
  File "C:\Users\michiya\workspace\Django-2.0.2\django\test\runner.py", line 601, in run_tests
    old_config = self.setup_databases()
  File "C:\Users\michiya\workspace\Django-2.0.2\django\test\runner.py", line 548, in setup_databases
    self.parallel, **kwargs
  File "C:\Users\michiya\workspace\Django-2.0.2\django\test\utils.py", line 176, in setup_databases
    serialize=connection.settings_dict.get('TEST', {}).get('SERIALIZE', True),
  File "C:\Users\michiya\workspace\Django-2.0.2\django\db\backends\base\creation.py", line 68, in create_test_db
    run_syncdb=True,
  File "C:\Users\michiya\workspace\Django-2.0.2\django\core\management\__init__.py", line 141, in call_command
    return command.execute(*args, **defaults)
  File "C:\Users\michiya\workspace\Django-2.0.2\django\core\management\base.py", line 335, in execute
    output = self.handle(*args, **options)
  File "C:\Users\michiya\workspace\Django-2.0.2\django\core\management\commands\migrate.py", line 169, in handle
    self.sync_apps(connection, executor.loader.unmigrated_apps)
  File "C:\Users\michiya\workspace\Django-2.0.2\django\core\management\commands\migrate.py", line 307, in sync_apps
    self.stdout.write("    Running deferred SQL...\n")
  File "C:\Users\michiya\workspace\Django-2.0.2\django\db\backends\base\schema.py", line 90, in __exit__
    self.execute(sql)
  File "C:\Users\michiya\workspace\django-pyodbc-azure\sql_server\pyodbc\schema.py", line 659, in execute
    cursor.execute(sql, params)
  File "C:\Users\michiya\workspace\Django-2.0.2\django\db\backends\utils.py", line 68, in execute
    return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
  File "C:\Users\michiya\workspace\Django-2.0.2\django\db\backends\utils.py", line 77, in _execute_with_wrappers
    return executor(sql, params, many, context)
  File "C:\Users\michiya\workspace\Django-2.0.2\django\db\backends\utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\michiya\workspace\Django-2.0.2\django\db\utils.py", line 89, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\michiya\workspace\Django-2.0.2\django\db\backends\utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "C:\Users\michiya\workspace\django-pyodbc-azure\sql_server\pyodbc\base.py", line 546, in execute
    return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]There are no primary or candidate keys in the referenced table 'm2m_through_regress_car' that match the referencing column list in the foreign key 'm2m_through_regress_cardriver_car_id_02e107b2_fk_m2m_through_regress_car_make'. (1776) (SQLExecDirectW); [42000] [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Could not create constraint or index. See previous errors. (1750)")

rubendv pushed a commit to Awingu/django-pyodbc-azure that referenced this pull request Oct 9, 2018
@peakwinter peakwinter closed this Dec 9, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants