Opened 8 days ago

Closed 30 hours ago

#35997 closed Bug (fixed)

Migrations crash on constraints/indexes with CompositePrimaryKey in fields.

Reported by: Mariusz Felisiak Owned by: Mariusz Felisiak
Component: Database layer (models, ORM) Version: dev
Severity: Release blocker Keywords:
Cc: Triage Stage: Ready for checkin
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

I've created a sample project that tries to add UniqueConstraint with a CompositePrimaryKey in fields. Unfortunately, it crashes when trying to migrate:

  ...
  File "/django/db/backends/base/schema.py", line 509, in create_model
    sql, params = self.table_sql(model)
                  ^^^^^^^^^^^^^^^^^^^^^
  File "/django/db/backends/base/schema.py", line 283, in table_sql
    constraint_sqls.extend(
  File "/django/db/backends/base/schema.py", line 284, in <genexpr>
    constraint.constraint_sql(model, self)
  File "/django/db/models/constraints.py", line 512, in constraint_sql
    return schema_editor._unique_sql(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/django/db/backends/base/schema.py", line 1839, in _unique_sql
    "columns": ", ".join([self.quote_name(field.column) for field in fields]),
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/django/db/backends/base/schema.py", line 207, in quote_name
    return self.connection.ops.quote_name(name)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/django/db/backends/postgresql/operations.py", line 190, in quote_name
    if name.startswith('"') and name.endswith('"'):
       ^^^^^^^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'startswith'

It's similar to the #35992 but fix is in a completely different place so I decided to create a separate ticket.

Bug in 978aae4334fa71ba78a3e94408f0f3aebde8d07c

Change History (4)

comment:1 by Natalia Bidart, 8 days ago

Triage Stage: UnreviewedAccepted

Thank you Mariusz!!!

comment:2 by Mariusz Felisiak, 7 days ago

Has patch: set

comment:3 by Sarah Boyce, 30 hours ago

Triage Stage: AcceptedReady for checkin

comment:4 by Sarah Boyce <42296566+sarahboyce@…>, 30 hours ago

Resolution: fixed
Status: assignedclosed

In 2249370c:

Fixed #35992, Fixed #35997 -- Added system check for CompositePrimaryKeys in Meta.indexes/constraints/unique_together.

CompositePrimaryKeys are not supported in any of these options.

Note: See TracTickets for help on using tickets.
Back to Top