2015-05-10 2 views
2

Я пытаюсь загрузить данные из моей базы данных sqlite в postgres heroku, но он не работает.django dumpdata => load on heroku

Сначала я побежал:

manage.py dumpdata --indent 1 > data.json 

, а затем я попытался загрузить его на Heroku с (после того, как я совершил файл Heroku):

heroku run python manage.py loaddata data.json 

, но он просто не работает. ..

он дал мне ошибки:

Running `python manage.py loaddata data.json` attached to terminal... up, run.92 
01 
Traceback (most recent call last): 
    File "manage.py", line 11, in <module> 
    execute_from_command_line(sys.argv) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/_ 
_init__.py", line 385, in execute_from_command_line 
utility.execute() 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/_ 
_init__.py", line 377, in execute 
self.fetch_command(subcommand).run_from_argv(self.argv) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/b 
ase.py", line 288, in run_from_argv 
self.execute(*args, **options.__dict__) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/b 
ase.py", line 338, in execute 
output = self.handle(*args, **options) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/c 
ommands/loaddata.py", line 61, in handle 
self.loaddata(fixture_labels) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/c 
ommands/loaddata.py", line 91, in loaddata 
self.load_label(fixture_label) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/core/management/c 
ommands/loaddata.py", line 148, in load_label 
obj.save(using=self.using) 
    File "/app/.heroku/python/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 "/app/.heroku/python/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, upda 
te_fields) 
    File "/app/.heroku/python/lib/python2.7/sitepackages/django/db/models/base.py 
", line 679, in _save_table 
forced_update) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/base.py 
", line 723, in _do_update 
return filtered._update(values) > 0 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/query.p 
y", line 600, in _update 
return query.get_compiler(self.db).execute_sql(CURSOR) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/sql/com 
piler.py", line 1004, in execute_sql 
cursor = super(SQLUpdateCompiler, self).execute_sql(result_type) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/sql/com 
piler.py", line 786, in execute_sql 
cursor.execute(sql, params) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/utils 
.py", line 65, in execute 
return self.cursor.execute(sql, params) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/db/utils.py",  line 94, in __exit__ 
six.reraise(dj_exc_type, dj_exc_value, traceback) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/db/backends/utils 
.py", line 65, in execute 
return self.cursor.execute(sql, params) 
django.db.utils.ProgrammingError: Problem installing fixture '/app/data.json': C 
ould not load contenttypes.ContentType(pk=1): relation "django_content_type"  does not exist 
LINE 1: UPDATE "django_content_type" SET "name" = 'log entry', "app_... 

В чем может быть проблема?

+0

https://docs.djangoproject.com/en/dev/topics/serialization/#natural-keys – madzohan

+0

Я получаю это с Django 1.9.2 – Rebs

+0

Я вручную вошел в систему и запустил 'python manage.py migrate' (он уже успешно запущен!). Волшебно, это работает. Я не понимаю, почему его нужно запускать дважды ?! – Rebs

ответ

1

Конец StackTrace имеет ключ:

relation "django_content_type"  does not exist 
LINE 1: UPDATE "django_content_type" SET "name" = 'log entry', "app_... 

В таблице django_content_type не существует. Попробуйте запустить миграции:

heroku run python manage.py migrate 

или, если вы используете старую версию:

heroku run python manage.py setupdb 
+0

Я запускал «makemigrations» и «migrate» перед запуском 'loaddata', и это все еще вызывает проблему. Он работает локально с SQLite. – Rebs

+1

Вам нужно запускать '' python manage.py makemigrations'' локально, совершать новые миграции и нажимать их на герою. Вам также нужны какие-либо приспособления, предназначенные для репо. Затем вы можете запустить '' heroku run python manage.py migrate'' для переноса базы данных Heroku и '' loaddata'' для загрузки светильников. Команды '' heroku run X'' не могут создавать файлы, они могут работать только с уже зафиксированными и толкаемыми файлами. – jwhitlock

Смежные вопросы