#14025: Flush command not fully supporting multi database support
---------------------------+------------------------------------------------
 Reporter:  linovia        |       Owner:  nobody    
   Status:  new            |   Milestone:            
Component:  Uncategorized  |     Version:  1.2       
 Keywords:                 |       Stage:  Unreviewed
Has_patch:  0              |  
---------------------------+------------------------------------------------
 Flush has not been reworked with multi database

 Story:

 If one use two different databases (ie, with different models in both)
 flush emits the emit_post_sync_signal on EVERY model for EVERY database.
 However since models may not be present (no django_site on legacy
 databases for example) an exception is raised which in turn breaks tests.

 I ran into this even if I had no fixtures or no database access:

 {{{
 ERROR: test_basic_addition (modulemanagement.tests.SimpleTest)
 ----------------------------------------------------------------------
 Traceback (most recent call last):
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/test/testcases.py", line 256, in
 __call__
     self._pre_setup()
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/test/testcases.py", line 223, in
 _pre_setup
     self._fixture_setup()
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/test/testcases.py", line 487, in
 _fixture_setup
     return super(TestCase, self)._fixture_setup()
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/test/testcases.py", line 235, in
 _fixture_setup
     call_command('flush', verbosity=0, interactive=False, database=db)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/core/management/__init__.py", line
 166, in call_command
     return klass.execute(*args, **defaults)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/core/management/base.py", line 218,
 in execute
     output = self.handle(*args, **options)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/core/management/base.py", line 347,
 in handle
     return self.handle_noargs(**options)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/core/management/commands/flush.py",
 line 69, in handle_noargs
     emit_post_sync_signal(models.get_models(), verbosity, interactive, db)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/core/management/sql.py", line 185,
 in emit_post_sync_signal
     interactive=interactive, db=db)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/dispatch/dispatcher.py", line 162,
 in send
     response = receiver(signal=self, sender=sender, **named)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/contrib/sites/management.py", line
 14, in create_default_site
     s.save(using=db)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/contrib/sites/models.py", line 46,
 in save
     super(Site, self).save(*args, **kwargs)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/db/models/base.py", line 435, in
 save
     self.save_base(using=using, force_insert=force_insert,
 force_update=force_update)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/db/models/base.py", line 528, in
 save_base
     result = manager._insert(values, return_id=update_pk, using=using)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/db/models/manager.py", line 195, in
 _insert
     return insert_query(self.model, values, **kwargs)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/db/models/query.py", line 1479, in
 insert_query
     return query.get_compiler(using=using).execute_sql(return_id)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/db/models/sql/compiler.py", line
 783, in execute_sql
     cursor = super(SQLInsertCompiler, self).execute_sql(None)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 packages/Django-1.2.1-py2.6.egg/django/db/models/sql/compiler.py", line
 727, in execute_sql
     cursor.execute(sql, params)
   File "/virtualenvs/django1.2/lib/python2.6/site-
 
packages/Django-1.2.1-py2.6.egg/django/db/backends/postgresql_psycopg2/base.py",
 line 44, in execute
     return self.cursor.execute(query, args)
 DatabaseError: relation "django_site" does not exist
 }}}

-- 
Ticket URL: <http://code.djangoproject.com/ticket/14025>
Django <http://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 post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to