1. Ian Struble
  2. django


jpel...@bcc190cf-cafb-0310-a4f2-bffc1f526a37  committed 4a03dce

[multi-db] Fixed orphan pending error message. Changed get_create_table to only fill pending if backend supports constraints.

  • Participants
  • Parent commits 6540ee5
  • Branches multiple-db-support

Comments (0)

Files changed (2)

File django/core/management.py

View file
  • Ignore whitespace
             models_installed = manager.get_installed_models(tables)
             for model in pending.keys():
+                manager = model._default_manager
                 if model in models_installed:
                     for rel_class, f in pending[model]:
-                        manager = model._default_manager 
                         for statement in manager.get_pending(rel_class, f):
-                    raise Exception("%s is not installed, but there are "
-                                    "pending statements that need it: %s"
-                                    % (model, statements))
+                    raise Exception("%s is not installed, but it has pending "
+                                    "references" % model)
     except Exception, e:
         import traceback
         print traceback.format_exception(*sys.exc_info())

File django/db/backends/ansi/sql.py

View file
  • Ignore whitespace
                         # We haven't yet created the table to which this field
                         # is related, so save it for later.
-                        pending.setdefault(f.rel.to, []).append((model, f))
+                        if backend.supports_constraints:
+                            pending.setdefault(f.rel.to, []).append((model, f))
                 table_output.append(' '.join(field_output))
         if opts.order_with_respect_to:
             table_output.append(style.SQL_FIELD(quote_name('_order')) + ' ' + \
         create = [BoundStatement('\n'.join(full_statement), db.connection)]
         # Pull out any pending statements for me
-        if (pending and
-            backend.supports_constraints):
+        if pending:
             if model in pending:
                 for rel_class, f in pending[model]:
                     create.append(self.get_ref_sql(model, rel_class, f,