I have a very similar migration issue. I had little success with South and SQLite as a dev setup.
I have
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ATOMIC_REQUESTS': True,
}
}
I create db with command:
./manage.py syncdb --noinput
It reported that the following apps are not synced and recommended to use migrations:
- oscar.apps.analytics
- oscar.apps.checkout
- oscar.apps.address
- oscar.apps.shipping
- oscar.apps.catalogue
- oscar.apps.partner
- oscar.apps.basket
- oscar.apps.payment
- oscar.apps.offer
- oscar.apps.order
- oscar.apps.promotions
- oscar.apps.voucher
- oscar.apps.wishlists
- oscar.apps.dashboard.catalogue
- oscar.apps.dashboard.ranges
- oscar.apps.customer
I then run initial migration for each app listed above like this:
./manage.py oscar.apps.analytics --initial
Then I run migrate and get an error message:
(zinnia-dev) SergeiMBP:rslp sergei$ ./manage.py migrate
Running migrations for analytics:
- Migrating forwards to 0002_initial.
> customer:0001_initial
> catalogue:0001_initial
> analytics:0001_initial
> analytics:0002_initial
FATAL ERROR - The following SQL query failed: CREATE TABLE "analytics_productrecord" ("id" integer NOT NULL PRIMARY KEY, "product_id" integer NOT NULL UNIQUE, "num_views" integer unsigned NOT NULL, "num_basket_additions" integer unsigned NOT NULL, "num_purchases" integer unsigned NOT NULL, "score" real NOT NULL)
The error was: table "analytics_productrecord" already exists
! Error found during real run of migration! Aborting.
! Since you have a database that does not support running
! schema-altering statements in transactions, we have had
! to leave it in an interim state between migrations.
! You *might* be able to recover with: = DROP TABLE "analytics_productrecord"; []
= DROP TABLE "analytics_userrecord"; []
= DROP TABLE "analytics_userproductview"; []
= DROP TABLE "analytics_usersearch"; []
! The South developers regret this has happened, and would
! like to gently persuade you to consider a slightly
! easier-to-deal-with DBMS (one that supports DDL transactions)
! NOTE: The error which caused the migration to fail is further up.
Error in migration: analytics:0002_initial
Traceback (most recent call last):
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/Django-1.6.1-py3.3.egg/django/db/backends/util.py", line 53, in execute
return self.cursor.execute(sql, params)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/Django-1.6.1-py3.3.egg/django/db/backends/sqlite3/base.py", line 450, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: table "analytics_productrecord" already exists
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/Django-1.6.1-py3.3.egg/django/core/management/__init__.py", line 399, in execute_from_command_line
utility.execute()
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/Django-1.6.1-py3.3.egg/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/Django-1.6.1-py3.3.egg/django/core/management/base.py", line 242, in run_from_argv
self.execute(*args, **options.__dict__)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/Django-1.6.1-py3.3.egg/django/core/management/base.py", line 285, in execute
output = self.handle(*args, **options)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/South-0.8.4-py3.3.egg/south/management/commands/migrate.py", line 111, in handle
ignore_ghosts = ignore_ghosts,
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/South-0.8.4-py3.3.egg/south/migration/__init__.py", line 220, in migrate_app
success = migrator.migrate_many(target, workplan, database)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/South-0.8.4-py3.3.egg/south/migration/migrators.py", line 254, in migrate_many
result = migrator.__class__.migrate_many(migrator, target, migrations, database)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/South-0.8.4-py3.3.egg/south/migration/migrators.py", line 329, in migrate_many
result = self.migrate(migration, database)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/South-0.8.4-py3.3.egg/south/migration/migrators.py", line 133, in migrate
result = self.run(migration, database)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/South-0.8.4-py3.3.egg/south/migration/migrators.py", line 114, in run
return self.run_migration(migration, database)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/South-0.8.4-py3.3.egg/south/migration/migrators.py", line 84, in run_migration
migration_function()
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/South-0.8.4-py3.3.egg/south/migration/migrators.py", line 60, in <lambda>
return (lambda: direction(orm))
File "/Users/sergei/Sites/zinnia-dev/ext/django-oscar/oscar/apps/analytics/migrations/0002_initial.py", line 18, in forwards
('score',
self.gf('django.db.models.fields.FloatField')(default=0.0)),
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/South-0.8.4-py3.3.egg/south/db/generic.py", line 47, in _cache_clear
return func(self, table, *args, **opts)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/South-0.8.4-py3.3.egg/south/db/generic.py", line 361, in create_table
"columns": ', '.join([col for col in columns if col]),
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/South-0.8.4-py3.3.egg/south/db/generic.py", line 282, in execute
cursor.execute(sql, params)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/Django-1.6.1-py3.3.egg/django/db/backends/util.py", line 69, in execute
return super(CursorDebugWrapper, self).execute(sql, params)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/Django-1.6.1-py3.3.egg/django/db/backends/util.py", line 53, in execute
return self.cursor.execute(sql, params)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/Django-1.6.1-py3.3.egg/django/db/utils.py", line 99, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/Django-1.6.1-py3.3.egg/django/utils/six.py", line 490, in reraise
raise value.with_traceback(tb)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/Django-1.6.1-py3.3.egg/django/db/backends/util.py", line 53, in execute
return self.cursor.execute(sql, params)
File "/Users/sergei/Sites/zinnia-dev/lib/python3.3/site-packages/Django-1.6.1-py3.3.egg/django/db/backends/sqlite3/base.py", line 450, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: table "analytics_productrecord" already exists