在 Django 中将 Postgres 与 Oscar 同步的编程错误

Programming Error syncing Postgres with Oscar in Django

我正在学习 OSCAR 教程 (http://django-oscar.readthedocs.org/en/latest/internals/getting_started.html) 并试图让 Haystack 与 Solr 一起工作。我已经设置了 postgres。我在 Cloud9 上 运行ning。我尝试 运行 "$ python manage.py syncdb --noinput" 这最终在 运行 迁移时被杀死...

/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/haystack/utils/__init__.py:12: RemovedInDjango19Warning: django.utils.importlib will be removed in Django 1.9.
  from django.utils import importlib

/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/oscar/apps/catalogue/abstract_models.py:20: RemovedInDjango19Warning: django.contrib.contenttypes.generic is deprecated and will be removed in Django 1.9. Its contents have been moved to the fields, forms, and admin submodules of django.contrib.contenttypes.
  from django.contrib.contenttypes.generic import GenericForeignKey

/home/ubuntu/workspace/oscar/local/lib/python2.7/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)

Operations to perform:
  Synchronize unmigrated apps: reports_dashboard, offers_dashboard, treebeard, communications_dashboard, reviews_dashboard, pages_dashboard, shipping_dashboard, haystack, promotions_dashboard, checkout, thumbnail, vouchers_dashboard, django_tables2, partners_dashboard, staticfiles, oscar, compressor, catalogue_dashboard, users_dashboard, search, messages, widget_tweaks, dashboard, ranges_dashboard, orders_dashboard
  Apply all migrations: customer, promotions, shipping, wishlists, offer, admin, sessions, contenttypes, auth, payment, reviews, analytics, catalogue, flatpages, sites, address, basket, partner, order, voucher
Synchronizing apps without migrations:
  Creating tables...
    Creating table thumbnail_kvstore
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states...Killed

我也试过 运行 这个没有 --noinput

/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/haystack/utils/__init__.py:12: RemovedInDjango19Warning: django.utils.importlib will be removed in Django 1.9.
  from django.utils import importlib

/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/oscar/apps/catalogue/abstract_models.py:20: RemovedInDjango19Warning: django.contrib.contenttypes.generic is deprecated and will be removed in Django 1.9. Its contents have been moved to the fields, forms, and admin submodules of django.contrib.contenttypes.
  from django.contrib.contenttypes.generic import GenericForeignKey

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute_from_command_line
    utility.execute()
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 330, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/core/management/base.py", line 393, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/core/management/base.py", line 444, in execute
    output = self.handle(*args, **options)
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/core/management/commands/migrate.py", line 93, in handle
    executor = MigrationExecutor(connection, self.migration_progress_callback)
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/migrations/executor.py", line 19, in __init__
    self.loader = MigrationLoader(self.connection)
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/migrations/loader.py", line 47, in __init__
    self.build_graph()
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/migrations/loader.py", line 182, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/migrations/recorder.py", line 59, in applied_migrations
    self.ensure_schema()
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/migrations/recorder.py", line 49, in ensure_schema
    if self.Migration._meta.db_table in self.connection.introspection.table_names(self.connection.cursor()):
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 162, in cursor
    cursor = self.make_debug_cursor(self._cursor())
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 135, in _cursor
    self.ensure_connection()
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 130, in ensure_connection
    self.connect()
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/utils.py", line 97, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 130, in ensure_connection
    self.connect()
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/backends/base/base.py", line 119, in connect
    self.connection = self.get_new_connection(conn_params)
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 176, in get_new_connection
    connection = Database.connect(**conn_params)
  File "/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/psycopg2/__init__.py", line 164, in connect
    conn = _connect(dsn, connection_factory=connection_factory, async=async)
django.db.utils.OperationalError: FATAL:  database "oscar_vagrant" does not exist

如果我尝试 运行 服务器,它表明数据库未同步...当我尝试加载页面时,我得到这个...

ProgrammingError at /
relation "promotions_pagepromotion" does not exist
LINE 1: ..."."app_label", "django_content_type"."model" FROM "promotion...
                                                             ^
Request Method: GET
Request URL:    https://love-benbuehne.c9.io/
Django Version: 1.8.3
Exception Type: ProgrammingError
Exception Value:    
relation "promotions_pagepromotion" does not exist
LINE 1: ..."."app_label", "django_content_type"."model" FROM "promotion...
                                                             ^
Exception Location: /home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages/django/db/backends/utils.py in execute, line 64
Python Executable:  /home/ubuntu/workspace/oscar/bin/python
Python Version: 2.7.6
Python Path:    
['/home/ubuntu/workspace',
 '/home/ubuntu/workspace',
 '/home/ubuntu/lib/python/site-packages',
 '/home/ubuntu/workspace/oscar/lib/python2.7',
 '/home/ubuntu/workspace/oscar/lib/python2.7/plat-x86_64-linux-gnu',
 '/home/ubuntu/workspace/oscar/lib/python2.7/lib-tk',
 '/home/ubuntu/workspace/oscar/lib/python2.7/lib-old',
 '/home/ubuntu/workspace/oscar/lib/python2.7/lib-dynload',
 '/usr/lib/python2.7',
 '/usr/lib/python2.7/plat-x86_64-linux-gnu',
 '/usr/lib/python2.7/lib-tk',
 '/home/ubuntu/workspace/oscar/local/lib/python2.7/site-packages']
Server time:    Fri, 10 Jul 2015 22:54:01 +0000

我有点搞不懂这是什么意思。似乎我在同步数据库时遇到了问题......而且似乎只是某种错误超出了我的范围。我什至不确定我可以将哪些文件复制到这里会有帮助。最好的我可以告诉 Django 正在访问 postgres ......并且由于一些奇怪的原因它没有同步。

删除数据库,删除迁移,然后 运行 syncdb 或 makemigrations 随心所欲。可能这会有所帮助。 如果它不起作用,请告诉我你的模型文件。

这主要是因为,在奥斯卡我猜你已经添加了

INSTALLED_APPS = [] + get_core_apps(['app.promotions'])

其中 app 是您的应用程序。由于奥斯卡的主页是写在促销活动中的。不包括平台的模型。您可以通过在 __init__.py 中导入组件来解决此问题,但您需要的除外。

app/promotions/__init__.py 应包含 from oscar.apps.promotions import *