#5710 closed (fixed)
dumpdata/loaddata fails with many-to-many tables on postgresql
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | dev |
Severity: | Keywords: | manage.py loaddata dumpdata postgresql | |
Cc: | gary.wilson@…, real.human@…, arthur.case@…, tom@…, mark@…, portland@…, floguy@…, django@…, remco@…, eliott@…, pythonmailing@… | Triage Stage: | Ready for checkin |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | UI/UX: |
Description
I did a (manage.py) dumpdata then loaddata with some models that had many to many fields. The subsequent loaddata operation failed with an error:
psycopg2.ProgrammingError: relation "keywordsites_site__site__keywords" does not exist.
The problem is that the name of the table is reduced to lower case where the name of the table is actually has an uppercase S
keywordsites_site__Site__keywords
and further investigation revealed that the generated SQL had the correct capitalisation but the table name was not quoted - hence the problem.
The fix is to change line 96 on django/db/backends/postgresql/operations.py to:
output.append("%s setval('%s', coalesce(max(%s), 1), max(%s) %s null) %s \"%s\";" % \
No idea how to make a .diff, sorry, but for a single line I'm sure you can cope. It would be nice to be able to turn WikiFormatting off inline too.
Attachments (1)
Change History (5)
by , 17 years ago
Attachment: | operations_py.patch added |
---|
comment:1 by , 17 years ago
Cc: | added |
---|
After critical review (thanks SmileyChris
) it appears there is a qn() call to use the backend's quoting mechanism. A patch using this significantly more correct method is attached.
comment:2 by , 17 years ago
Triage Stage: | Unreviewed → Ready for checkin |
---|
This is a simple and obviously correct change so I won't ask for tests, however the committer might. You can see from the very similar code 10 lines above this change that it should be quoted.
comment:3 by , 17 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Patch against revision 6468 to fix postgresql m2m loaddata problem