Opened 18 years ago

Closed 18 years ago

Last modified 18 years ago

#1766 closed defect (fixed)

[patch] Syncdb fails if two models within an application refer to the same database table.

Reported by: clelland@… Owned by: Adrian Holovaty
Component: Core (Other) Version:
Severity: normal Keywords:
Cc: Triage Stage: Unreviewed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

If two models within a single application, or in two applications within the same project, reference the same database table (by overriding db_table in the Meta class for at least one of them,) then 'manage.py syncdb' will try to create the table twice, causing the database backend to raise an exception, and manage.py will fail.

django/core/management.py is getting a list of existing tables through database introspection in order to avoid exactly this problem. Currently, however, it does not update that list as it creates tables, so if a table is mentioned twice, it will blindly try to create it twice.

This patch adds one line to syncdb() in management.py to update the list of existing tables as they are created.

Attachments (1)

management.diff (482 bytes ) - added by clelland@… 18 years ago.
One-line patch to resolve this issue

Download all attachments as: .zip

Change History (3)

by clelland@…, 18 years ago

Attachment: management.diff added

One-line patch to resolve this issue

comment:1 by Adrian Holovaty, 18 years ago

Resolution: fixed
Status: newclosed

(In [2835]) Fixed #1766 -- Fixed bug in syncdb where it allowed two models to have the same database table. Thanks, Ian Clelland

comment:2 by Bryan Chow <fullfactor at gmail dot com>, 18 years ago

Wow, that was fast! Thanks Adrian :)

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