#34881: migrate crashes when renaming model referenced twice by
ManyToManyField.through model on SQLite.
----------------------------+------------------------------------
Reporter: dennisvang | Owner: nobody
Type: Bug | Status: new
Component: Migrations | Version: dev
Severity: Normal | Resolution:
Keywords: sqlite | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
----------------------------+------------------------------------
Comment (by dennisvang):
Replying to [comment:10 Natalia Bidart]:
> Assuming a simpler model for `Person` where the M2M is implicit, and
doing the rename, does indeed work. The SQL for the migration is:
> * 0003 (renamed `SimplerPerson` to `SimplerPersonFoo`)
> {{{#!sql
>
> BEGIN;
> --
> -- Rename model SimplerPerson to SimplerPersonFoo
> --
> ALTER TABLE "ticket_34881_simplerperson" RENAME TO
"ticket_34881_simplerpersonfoo";
> CREATE TABLE "ticket_34881_simplerpersonfoo_parents_or_children" ("id"
integer NOT NULL PRIMARY KEY AUTOINCREMENT, "from_simplerpersonfoo_id"
bigint NOT NULL REFERENCES "ticket_34881_simplerpersonfoo" ("id")
DEFERRABLE INITIALLY DEFERRED, "to_simplerpersonfoo_id" bigint NOT NULL
REFERENCES "ticket_34881_simplerpersonfoo" ("id") DEFERRABLE INITIALLY
DEFERRED);
> INSERT INTO "ticket_34881_simplerpersonfoo_parents_or_children" (id,
from_simplerpersonfoo_id, to_simplerpersonfoo_id) SELECT id,
from_simplerperson_id, to_simplerperson_id FROM
"ticket_34881_simplerperson_parents_or_children";
> DROP TABLE "ticket_34881_simplerperson_parents_or_children";
> CREATE UNIQUE INDEX
"ticket_34881_simplerpersonfoo_parents_or_children_from_simplerpersonfoo_id_to_simplerpersonfoo_id_f05f0b12_uniq"
ON "ticket_34881_simplerpersonfoo_parents_or_children"
("from_simplerpersonfoo_id", "to_simplerpersonfoo_id");
> CREATE INDEX
"ticket_34881_simplerpersonfoo_parents_or_children_from_simplerpersonfoo_id_6d3cdfb4"
ON "ticket_34881_simplerpersonfoo_parents_or_children"
("from_simplerpersonfoo_id");
> CREATE INDEX
"ticket_34881_simplerpersonfoo_parents_or_children_to_simplerpersonfoo_id_83aff647"
ON "ticket_34881_simplerpersonfoo_parents_or_children"
("to_simplerpersonfoo_id");
> COMMIT;
> }}}
>
> It's worth noting that the content of the explicit M2M (`Relation`) has
these rows:
> {{{
> sqlite> SELECT * FROM ticket_34881_relation;
> 1|1|3
> 2|2|3
> 3|1|4
> 4|2|4
> }}}
>
> While the rows for the implicit one include:
> {{{
> sqlite> SELECT * FROM ticket_34881_simplerperson_parents_or_children;
> 1|3|1
> 2|3|2
> 3|1|3
> 4|2|3
> 5|4|1
> 6|4|2
> 7|1|4
> 8|2|4
> }}}
>
>
> It may look like a valid issue but I'll cc Simon and Mariusz for a
second opinion.
Thanks for reproducing this. :-)
You are right, for the implicit M2M relation, I should have set
`symmetrical=False` in order to get the equivalent of my explicit
`Relation`.
However, the rename also works fine for the implicit case with
`symmetrical=False`.
--
Ticket URL: <https://code.djangoproject.com/ticket/34881#comment:12>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/0107018ae207c497-8059ff2e-a20d-4aed-987b-f64ac45aaa28-000000%40eu-central-1.amazonses.com.