Opened 13 years ago

Closed 13 years ago

#14566 closed (invalid)

Multiple database issue v1.2.3 - Django reading the wrong database

Reported by: Mike Owned by: nobody
Component: Database layer (models, ORM) Version: 1.2
Severity: Keywords:
Cc: Triage Stage: Unreviewed
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Alex Gaynor)

I have two PostgreSQL (postgresql_psycopg2) databases defined in my settings; default and scenes.

If I perform a filter using the 'scenes' DB I get the expected results:

Scene.objects.filter(name__contains='ME').using('scenes')
[<Scene: Scene object>, <Scene: Scene object>]

If I perform a get(), Django seems to get completely confused and appears to read the data from the default database:

Scene.objects.get(id=3).using('scenes')
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/python2.6/site-packages/django/db/models/manager.py", line 132, in get
    return self.get_query_set().get(*args, **kwargs)
  File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 336, in get
    num = len(clone)
  File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 81, in __len__
    self._result_cache = list(self.iterator())
  File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 269, in iterator
    for row in compiler.results_iter():
  File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 672, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 727, in execute_sql
    cursor.execute(sql, params)
  File "/usr/lib/python2.6/site-packages/django/db/backends/util.py", line 15, in execute
    return self.cursor.execute(sql, params)
  File "/usr/lib/python2.6/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 44, in execute
    return self.cursor.execute(query, args)
DatabaseError: relation "scene" does not exist
LINE 1: ...le", "scene"."datasets", "scene"."transform" FROM "scene" WH...

Anyone else seen this?

Thanks

Change History (3)

comment:1 by Alex Gaynor, 13 years ago

Description: modified (diff)

Reformatted description, please use preview.

comment:2 by Johannes Dollinger, 13 years ago

Is that a typo in the description or have you really swapped get and using ?

Scene.objects.get(id=3).using('scenes')
# vs
Scene.objects.using('scenes').get(id=3)

comment:3 by Alex Gaynor, 13 years ago

Resolution: invalid
Status: newclosed

No response to emulbreh's query, as it looks like a bug in the user's code I'm going to close for now, feel free to reopen with more information.

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