运行迁移命令 Django 时出错



我正在尝试在服务器上部署我的第一个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

将数据库状态与当前模型集同步,并且 迁移。

最新更新