2015-04-19 34 views
8

Próbuję wdrożyć aplikację Django (1.8) do Heroku, runtime Python 3.4.2. Aplikacja działa z powodzeniem (z wyjątkiem faktu, że tabele nie są tworzone), ale gdy próbuje uruchomić syncdb pojawia się następujący błąd:Migracja Django kończy się niepowodzeniem w heroku

Running `python manage.py syncdb` attached to terminal... up, run.5851 
/app/.heroku/python/lib/python3.4/site-packages/django/core/management  
/commands/syncdb.py:24: RemovedInDjango19Warning: The syncdb command 
will be removed in Django 1.9 
warnings.warn("The syncdb command will be removed in Django 1.9", RemovedInDjango19Warning) 

Traceback (most recent call last): 
File "/app/.heroku/python/lib/python3.4/site-packages/django/db/migrations/loader.py", line 157, in check_key 
return list(self.graph.root_nodes(key[0]))[0] 
IndexError: list index out of range 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
File "manage.py", line 10, in <module> 
execute_from_command_line(sys.argv) 
File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line 
utility.execute() 
File "/app/.heroku/python/lib/python3.4/site-packages/django /core/management/__init__.py", line 330, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/base.py", line 390, in run_from_argv 
self.execute(*args, **cmd_options) 
File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/base.py", line 441, in execute 
output = self.handle(*args, **options) 
File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/commands/syncdb.py", line 25, in handle 
call_command("migrate", **options) 
File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/__init__.py", line 120, in call_command 
return command.execute(*args, **defaults) 
File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/base.py", line 441, in execute 
output = self.handle(*args, **options) 
File "/app/.heroku/python/lib/python3.4/site-packages/django/core/management/commands/migrate.py", line 93, in handle 
executor = MigrationExecutor(connection, self.migration_progress_callback) 
File "/app/.heroku/python/lib/python3.4/site-packages/django/db/migrations/executor.py", line 19, in __init__ 
self.loader = MigrationLoader(self.connection) 
File "/app/.heroku/python/lib/python3.4/site-packages/django/db/migrations/loader.py", line 47, in __init__ 
self.build_graph() 
File "/app/.heroku/python/lib/python3.4/site-packages/django/db/migrations/loader.py", line 287, in build_graph 
parent = self.check_key(parent, key[0]) 
File "/app/.heroku/python/lib/python3.4/site-packages/django/db/migrations/loader.py", line 164, in check_key 
raise ValueError("Dependency on app with no migrations: %s" % key[0]) 
ValueError: Dependency on app with no migrations: authentication 

używam SQLite.

+0

jest 'authentication' w zainstalowanych aplikacjach? – knbk

+0

Tak, uwierzytelnianie jest w zainstalowanych aplikacjach. – user3706162

Odpowiedz

8

Na komputerze deweloperskim utwórz swoje migracje za pomocą python manage.py makemigrations. Następnie, zakładając, że foldery migracji są wysyłane do heroku, na heroku uruchom python manage.py migrate zamiast python manage.py syncdb. Zobacz docs.

+0

Mam ten sam problem. Co mam zrobić z migracjami dla aplikacji django, które są w moim virtualenv? Może to i tak nie jest mój problem, nie jestem pewien. – northben

+2

Wypróbuj polecenie heroku run python manage.py migrate. Spowoduje to przeniesienie aplikacji do virtualenv urządzenia produkcyjnego. – mcastle

2

dla mnie rozwiązać ten problem za pomocą tego samego polecenia co używamy w naszym lokalnym serwerze z przedrostkiem „run Heroku” To jest to ..

dla np: -

python manage.py makemigrations 

to będzie działać w Nasz lokalny ale Heroku, tak: -

heroku run python manage.py makemigrations 
2

ja hade wejść maszynowy Heroku za bash:

heroku run bash

a następnie dokonać makemigrations:

heroku run python manage.py makemigrations 

Wreszcie

heroku run python manage.py migrate 
Powiązane problemy