我正在尝试在服务器上部署我的第一个Web项目。我在运行迁移和进行迁移时收到此错误:
ProgrammingError (1146, "Table '<user>$<dbname>.<table_name>'' doesn't exist")
到处都说你应该运行manage.py syncdb
但这已经过时了,同样在运行时manage.py --run-syncdb
也会给出相同的错误。
模型
class Book(models.Model):
name = models.CharField(max_length=350)
author = models.CharField(max_length=350)
category = models.CharField(max_length=200)
def __str__(self):
return self.name
设置中的截图符
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '<your_username>$<your_database_name>',
'USER': '<your_username>',
'PASSWORD': '<your_mysql_password>',
'HOST': '<your_mysql_hostname>',
}
} #Everything is replaced with the correct credentials
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'main_app',
'accounts',
]
服务器上的数据库为空。在我的 PC 上(当我在本地开发它时),它可以工作,当数据库中不存在表时,它为我创建了表。
我正在使用Django 1.11和Mysql 5.6.27。
我尝试了其他答案,但没有帮助我。你能建议我能做些什么来解决这个问题吗?
你应该使用迁移机制:https://docs.djangoproject.com/en/1.11/topics/migrations/
./manage.py makemigrations # this creates migrations files
./manage.py migrate # this applies migrations
你不需要使用 syncdb。
第一次创建 Django 项目时,为了在 Django 中创建预安装的应用程序(如管理界面)数据库,您需要使用:python manage.py migrate
它创建所有必要的数据库表和关系。
但是,每次对应用进行更改(例如在模型中创建新列)时,都可以使用:
python manage.py makemigrations [your app name]
结果将如下所示:
(env35) someone@shell:~/bookstore$ python manage.py makemigrations books
Migrations for 'books':
0005_publisher_family.py:
- Add field family to publisher
最后你跑:
python manage.py migrate
将数据库状态与当前模型集同步,并且 迁移。