#24274: migrations break fixtures
-------------------------------+--------------------
     Reporter:  yuriiz         |      Owner:  nobody
         Type:  Uncategorized  |     Status:  new
    Component:  Uncategorized  |    Version:  1.7
     Severity:  Normal         |   Keywords:
 Triage Stage:  Unreviewed     |  Has patch:  0
Easy pickings:  0              |      UI/UX:  0
-------------------------------+--------------------
 Since Django 1.7 syncdb does not work if there are fixtures including
 objects from apps having migrations because currently syncdb/migrate does
 following:
 1. Create tables for unmigrated apps
 2. Load initial_data.json
 3. Apply migrations
 If one would like to have instances of models from app having migration in
 initial_data.json syncdb will break with smth like this:
 {{{
 Operations to perform:
   Synchronize unmigrated apps: google, allauth, widget_tweaks, flatpages,
 facebook
   Apply all migrations: account, sessions, admin, sites, auth,
 contenttypes, socialaccount
 Synchronizing apps without migrations:
   Creating tables...
     Creating table django_flatpage_sites
     Creating table django_flatpage
   Installing custom SQL...
   Installing indexes...
 Traceback (most recent call last):
   File "manage.py", line 10, in <module>
     execute_from_command_line(sys.argv)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 385, in
 execute_from_command_line
     utility.execute()
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 377, in execute
     self.fetch_command(subcommand).run_from_argv(self.argv)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/base.py", line 288, in run_from_argv
     self.execute(*args, **options.__dict__)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/base.py", line 338, in execute
     output = self.handle(*args, **options)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/base.py", line 533, in handle
     return self.handle_noargs(**options)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/commands/syncdb.py", line 27, in
 handle_noargs
     call_command("migrate", **options)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 115, in call_command
     return klass.execute(*args, **defaults)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/base.py", line 338, in execute
     output = self.handle(*args, **options)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/commands/migrate.py", line 128, in handle
     created_models = self.sync_apps(connection,
 executor.loader.unmigrated_apps)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/commands/migrate.py", line 298, in
 sync_apps
     call_command('loaddata', 'initial_data', verbosity=self.verbosity,
 database=connection.alias, skip_validation=True, app_label=app_label,
 hide_empty=True)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/__init__.py", line 115, in call_command
     return klass.execute(*args, **defaults)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/base.py", line 338, in execute
     output = self.handle(*args, **options)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/commands/loaddata.py", line 61, in handle
     self.loaddata(fixture_labels)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/commands/loaddata.py", line 91, in
 loaddata
     self.load_label(fixture_label)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/management/commands/loaddata.py", line 148, in
 load_label
     obj.save(using=self.using)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/core/serializers/base.py", line 173, in save
     models.Model.save_base(self.object, using=using, raw=True)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/db/models/base.py", line 617, in save_base
     updated = self._save_table(raw, cls, force_insert, force_update,
 using, update_fields)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/db/models/base.py", line 679, in _save_table
     forced_update)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/db/models/base.py", line 723, in _do_update
     return filtered._update(values) > 0
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/db/models/query.py", line 600, in _update
     return query.get_compiler(self.db).execute_sql(CURSOR)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/db/models/sql/compiler.py", line 1004, in execute_sql
     cursor = super(SQLUpdateCompiler, self).execute_sql(result_type)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/db/models/sql/compiler.py", line 786, in execute_sql
     cursor.execute(sql, params)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/db/backends/utils.py", line 81, in execute
     return super(CursorDebugWrapper, self).execute(sql, params)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/db/backends/utils.py", line 65, in execute
     return self.cursor.execute(sql, params)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/db/utils.py", line 94, in __exit__
     six.reraise(dj_exc_type, dj_exc_value, traceback)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/db/backends/utils.py", line 65, in execute
     return self.cursor.execute(sql, params)
   File "/home/user/myproject/local/lib/python2.7/site-
 packages/django/db/backends/sqlite3/base.py", line 485, in execute
     return Database.Cursor.execute(self, query, params)
 django.db.utils.OperationalError: Problem installing fixture
 '/home/user/myproject/initial_data.json': Could not load
 socialaccount.SocialApp(pk=1): no such table: socialaccount_socialapp
 }}}
 The proper sequence of actions that syncdb/migrate does should be:
 1. Create tables for unmigrated apps
 2. Apply migrations
 3. Load initial_data.json

--
Ticket URL: <https://code.djangoproject.com/ticket/24274>
Django <https://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 unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/049.5c9e9ee309c8f82dcaccf2e88ef09cb6%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to