De la difficulté d'obtenir Django mis en place sur Heroku à l'aide Sud - reçois ProgrammingError: relation n'existe pas

C'est ce que j'ai fait:

Localement où j'ai acheté une nouvelle base de données postgres, et deux models.py des fichiers à partir de deux applications différentes:

python manage.py syncdb
python manage.py schemamigration api --initial
python manage.py schemamigration extapi --initial
python manage.py migrate api 0001 --fake
python manage.py migrate extapi 0001 --fake

Cela fonctionne de la houle, et je peux ajouter des trucs à la base de données de l'amende juste.

Puis, lorsque l'on pousse à Heroku, où j'ai déjà créé un vide app:

git add .
git commit -m "Ready to go to Heroku"
git push heroku master
heroku run python manage.py syncdb

Sorties que cela:

Running `python manage.py syncdb` attached to terminal... up, run.9548
Syncing...
Creating tables ...
Creating table django_admin_log
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table south_migrationhistory

# create superuser prompt...
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

Synced:
 > django.contrib.admin
 > django.contrib.auth
 > django.contrib.contenttypes
 > django.contrib.sessions
 > django.contrib.messages
 > django.contrib.staticfiles
 > south
 > rest_framework

Not synced (use migrations):
 - api
 - extapi

Ensuite, j'essaie de migrer ces applications avec heroku run python manage.py migrate et obtiens cette erreur:

Running `python manage.py migrate` attached to terminal... up, run.3724
Running migrations for api:
- Migrating forwards to 0001_initial.
> api:0001_initial
FATAL ERROR - The following SQL query failed: ALTER TABLE "api_song" ADD CONSTRAINT "summary_id_refs_id_36bb6e06" FOREIGN KEY ("summary_id") REFERENCES "extapi_summary" ("id") DEFERRABLE INITIALLY DEFERRED;
The error was: relation "extapi_summary" does not exist
Error in migration: api:0001_initial
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
self.execute(*args, **options.__dict__)
File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
output = self.handle(*args, **options)
File "/app/.heroku/python/lib/python2.7/site-packages/south/management/commands/migrate.py", line 111, in handle
ignore_ghosts = ignore_ghosts,
File "/app/.heroku/python/lib/python2.7/site-packages/south/migration/__init__.py", line 220, in migrate_app
success = migrator.migrate_many(target, workplan, database)
File "/app/.heroku/python/lib/python2.7/site-packages/south/migration/migrators.py", line 254, in migrate_many
result = migrator.__class__.migrate_many(migrator, target, migrations, database)
File "/app/.heroku/python/lib/python2.7/site-packages/south/migration/migrators.py", line 329, in migrate_many
result = self.migrate(migration, database)
File "/app/.heroku/python/lib/python2.7/site-packages/south/migration/migrators.py", line 133, in migrate
result = self.run(migration, database)
File "/app/.heroku/python/lib/python2.7/site-packages/south/migration/migrators.py", line 114, in run
return self.run_migration(migration, database)
File "/app/.heroku/python/lib/python2.7/site-packages/south/migration/migrators.py", line 85, in run_migration
south.db.db.execute_deferred_sql()
File "/app/.heroku/python/lib/python2.7/site-packages/south/db/generic.py", line 318, in execute_deferred_sql
self.execute(sql)
File "/app/.heroku/python/lib/python2.7/site-packages/south/db/generic.py", line 282, in execute
cursor.execute(sql, params)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/util.py", line 53, in execute
return self.cursor.execute(sql, params)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/utils.py", line 99, in __exit__
six.reraise(dj_exc_type, dj_exc_value, traceback)
File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/util.py", line 53, in execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: relation "extapi_summary" does not exist

Pour moi, il semble que les tables ne sont pas même d'être créé, mais je n'ai aucune idée de pourquoi pas. Quand je lance heroku run python manage.py sqlall il dit que tout a été fait, mais ensuite je regarde la base de données elle-même (l'un heroku sur s3) il n'y a rien de app_one et app_two. Encore une fois, cela marche parfaitement en local, c'est juste quand il va sur heroku que les choses tombent en morceaux.

Qu'advient-il si vous exécutez ./manage.py migrate extapi puis ./manage.py migrate?
Je reçois django.db.utils.ProgrammingError: relation "api_userprofile" does not exist après l'exécution de heroku run ./manage.py migrate extapi. Actuellement, il y a un from api.models import UserProfile importer en haut de extapi.modèles. Vais essayer de changer autour d'importations...
Oui, même problème.

OriginalL'auteur Andrew Konoff | 2014-03-06