繁体   English   中英

Django manage.py 未知命令:'syncdb'

[英]Django manage.py Unknown command: 'syncdb'

我正在尝试按照 本教程进行操作,但我卡在了第 5 步。

当我执行

[~/Django Projects.netmag$] python manage.py syncdb

我收到以下错误消息:

Unknown command: 'syncdb'
Type 'manage.py help' for usage.

这里是./manage.py help的 output 不包含syncdb命令。 我该如何添加它?

谢谢你的帮助!

编辑:

当我运行 migrate 时,出现以下错误:

“创建新内容类型时出错。请确保内容类型” RuntimeError:创建新内容类型时出错。 在尝试单独迁移应用程序之前,请确保已迁移内容类型。

在 settings.py 中:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admindocs',
    'blog',
]

编辑 2:

如果我从 settings.py 中删除'blog',

:~/Django Projects/netmag$ python manage.py migrate blog
CommandError: App 'blog' does not have migrations. 

:~/Django Projects/netmag$ python manage.py makemigrations blog 
App 'blog' could not be found. Is it in INSTALLED_APPS?

django 1.7 中 不推荐使用syncdb命令。 改用python manage.py migrate

您必须使用python manage.py migrate而不是python manage.py syncdb

运行python manage.py makemigrations结果如下

Migrations for 'blog':
blog/migrations/0001_initial.py:
- Create model Blog

然后在下面运行python manage.py migrate结果

Operations to perform:
Apply all migrations: admin, blog, auth, contenttypes, sessions
Running migrations:
Applying article.0001_initial... OK

您可以分阶段执行此操作,假设您有一个名为“example”的应用程序:

  1. 运行 python manage.py makemigrations 示例
  2. 一个数字生成像 '0001' 获取数字
  3. 使用编号运行 python manage.py sqlmigrate 示例 0001。 查看脚本。
  4. 运行 python manage.py migrate 示例 0001

您还可以像这样查看所有迁移: python manage.py showmigrations
如果您不想提交它,请在执行步骤 4 之前转到该文件夹​​并将其移动到某个位置或将其删除。

实际命令是:

python manage.py migrate --run-syncdb

它将解决 django 中的许多错误,例如,操作错误,在数据库中找不到表等。

但是,由于需要为 MariaDB 启用严格模式,因此可能会发生另一个错误。

在settings.py文件中保持数据库连接如下:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'test',
    'USER': 'root',
    'PASSWORD': '',
    'HOST': 'localhost',   # Or an IP Address that your DB is hosted on
    'PORT': '3306',
    'OPTIONS': {
        'sql_mode': 'traditional',
    }
}

}

请记住以下代码:

'OPTIONS': {
        'sql_mode': 'traditional',
    }

毕竟,如果您的 DJango 版本是回溯的,“python manage.py syncdb”将起作用,但对于大于或等于 1.7 的更新版本,请使用“python manage.py migrate”

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM