运行migrate命令Django时出错

时间:2017-10-26 09:18:23

标签: python mysql django

我正在尝试在服务器上部署我的第一个Web项目。运行migrate和makemigrations时出现此错误:

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

来自设置

的snipppets
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',
]

服务器上的DB为空。在我的电脑上(当我在本地开发它时)它工作,当它在数据库中不存在时,它为我创建了表。

我正在使用Django 1.11和Mysql 5.6.27。

我尝试了其他答案,但没有帮助我。 您能否建议我该怎样做才能解决这个问题?

2 个答案:

答案 0 :(得分:2)

您应该使用迁移机制:https://docs.djangoproject.com/en/1.11/topics/migrations/

./manage.py makemigrations # this creates migrations files
./manage.py migrate # this applies migrations

答案 1 :(得分:0)

您不需要使用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
  

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