-
Notifications
You must be signed in to change notification settings - Fork 44
Open
Description
Django version is: 5.0.11
ibm_db_django version is 1.5.3.0
Running migration for django.contrib.auth application (0010, e.g.: django-admin.py migrate auth 0010) I get error:
Traceback (most recent call last):
File "/srv/itzz/python/itzz/manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "/srv/pyenv311/lib64/python3.11/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
utility.execute()
File "/srv/pyenv311/lib64/python3.11/site-packages/django/core/management/__init__.py", line 436, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/srv/pyenv311/lib64/python3.11/site-packages/django/core/management/base.py", line 413, in run_from_argv
self.execute(*args, **cmd_options)
File "/srv/pyenv311/lib64/python3.11/site-packages/django/core/management/commands/sqlmigrate.py", line 38, in execute
return super().execute(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/srv/pyenv311/lib64/python3.11/site-packages/django/core/management/base.py", line 459, in execute
output = self.handle(*args, **options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/srv/pyenv311/lib64/python3.11/site-packages/django/core/management/commands/sqlmigrate.py", line 80, in handle
sql_statements = loader.collect_sql(plan)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/srv/pyenv311/lib64/python3.11/site-packages/django/db/migrations/loader.py", line 381, in collect_sql
state = migration.apply(state, schema_editor, collect_sql=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/srv/pyenv311/lib64/python3.11/site-packages/django/db/migrations/migration.py", line 132, in apply
operation.database_forwards(
File "/srv/pyenv311/lib64/python3.11/site-packages/django/db/migrations/operations/fields.py", line 235, in database_forwards
schema_editor.alter_field(from_model, from_field, to_field)
File "/srv/pyenv311/lib64/python3.11/site-packages/ibm_db_django/schemaEditor.py", line 288, in alter_field
self._alter_field(model, old_field, new_field, old_type, new_type,
File "/srv/pyenv311/lib64/python3.11/site-packages/ibm_db_django/schemaEditor.py", line 438, in _alter_field
fk_constraints = self._is_referenced_by_fk_constraint(model._meta.db_table, old_field.column, ignore_self=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/srv/pyenv311/lib64/python3.11/site-packages/ibm_db_django/schemaEditor.py", line 237, in _is_referenced_by_fk_constraint
constraint_table, constraint_column = constraint['foreign_key']
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: too many values to unpack (expected 2)
Inspecting constraint data in the point of failure I get:
constraint['foreign_key'] := ('explain_operator', 'explain_requester', 'explain_time', 'source_name', 'source_schema', 'source_version', 'explain_level', 'stmtno', 'sectno', 'operator_id')
So, table name of constraint is explain_operator, and list of columns is [ 'explain_requester', 'explain_time', 'source_name', 'source_schema', 'source_version', 'explain_level', 'stmtno', 'sectno', 'operator_id].
Two issues:
- table
explain_operatoris standard db2 table used internally forEXPLAINcommand. Such tables maybe should be be skipped when collecting, or better, only tables that needs migrate management should be analysed. - constraint can have more than one columns in its definition (even django allows such cases, e.g.
Index(), unique_together, ...), so logic should be fixed
Metadata
Metadata
Assignees
Labels
No labels