【发布时间】:2017-05-24 05:34:12
【问题描述】:
我在本地环境中设置了所有内容,并且在 Heroku 服务器上设置了我网站的代码,但我在将架构迁移到 Heroku 服务器上的 PostgreSQL 数据库时遇到了严重的问题。每当我尝试heroku run python manage.py migrate 时,我都会得到以下信息(这将是初始迁移):
Running python manage.py migrate on baseballstatview... up, run.1653 (Free)
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions, statview
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying sessions.0001_initial... OK
Applying statview.0001_initial... OK
这看起来不错,但是使用 heroku pg:info 它告诉我我有 0 个表,甚至当我运行 heroku run python manage.py showmigrations 时,这就是我得到的:
Running python manage.py showmigrations on baseballstatview... up, run.5059 (Free)
admin
[ ] 0001_initial
[ ] 0002_logentry_remove_auto_add
auth
[ ] 0001_initial
[ ] 0002_alter_permission_name_max_length
[ ] 0003_alter_user_email_max_length
[ ] 0004_alter_user_username_opts
[ ] 0005_alter_user_last_login_null
[ ] 0006_require_contenttypes_0002
[ ] 0007_alter_validators_add_error_messages
[ ] 0008_alter_user_username_max_length
contenttypes
[ ] 0001_initial
[ ] 0002_remove_content_type_name
sessions
[ ] 0001_initial
statview
[ ] 0001_initial
因此,迁移似乎没有通过,我想知道为什么会这样。数据库为空,我已尝试重置它并再次尝试,但似乎没有任何效果。
编辑:下面是相关的settings.pyfor dj_database_url:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'mlb_data',
'USER': 'postgres',
'PASSWORD': 'pw',
'HOST': 'localhost',
'PORT': '5432',
}
}
import dj_database_url
DATABASES['default'] = dj_database_url.config()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
ALLOWED_HOSTS = ['*']
DEBUG = False
try:
from .local_settings import *
except ImportError:
pass
【问题讨论】:
-
您的数据库是如何定义的?你在用
dj-database-url吗? -
@Chris 是的,我是
-
你在local_settings中有什么吗?它会覆盖数据库设置吗?
-
@thumbtack_5,您在 Heroku 上的
DATABASE_URL环境变量是什么(确保清理它以删除实际的主机、数据库名称、用户和密码)?我意识到这只是对所有东西进行了消毒,但我们需要看到它。 -
@DanielRoseman @Chris 感谢您的意见。看来我的
local_settings.py覆盖了settings.py
标签: python django postgresql heroku database-migration