这是我的第一个Django应用程序部署,需要学习很多知识。这是我在DATABASES
settings.py
的设置
DEBUG = False
if DEBUG:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'db_name',
'USER': 'db_user',
'PASSWORD': 'db_password',
'HOST': 'localhost',
'PORT': '',
}
}
git push
和git pull
,使服务器上的迁移像往常一样在本地进行;迁移成功,但是,它们似乎没有应用(如果有关联,则错误修复是将某些电话号码字段从IntegerField
更改为CharField
,防止出现错误“验证此值小于或等于2147483647”;但是奇怪的是,手机IntegerField
在部署并在本地运行之前没有任何错误)
DEBUG
到True
或False
),那怎么可能? 这是否意味着settings.py
中的上述代码从根本上是错误的?只能在Django中设置一个default
数据库吗?还是我在迁移时做错了什么?
PS。我一点都不熟悉DATABASE命令,因此也很感谢能解决该问题的任何指针
在下面尝试@ruddra的答案以及重新启动django应用程序:
$ sudo service gunicorn restart
也许您正在使用apache2
或gunicorn
以外的其他软件,以某种方式重新启动可以帮助正确的数据库或代码更改也适用。
答案 0 :(得分:1)
除了使用这种方法,我建议使用ENVIRONMENT VARIABLES
来区分如何加载数据库。例如:
# command line
export USE_PROD_DB=true
# in settings.py
DEBUG = False
if not os.environ.get('USE_PROD_DB', None):
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'db_name',
'USER': 'db_user',
'PASSWORD': 'db_password',
'HOST': 'localhost',
'PORT': '',
}
}