【问题标题】:CommandError: App 'books' has migrations. Only the sqlmigrate and sqlflush commands can be used when an app has migrations [duplicate]CommandError:应用程序“书籍”有迁移。当应用程序进行迁移时,只能使用 sqlmigrate 和 sqlflush 命令 [重复]
【发布时间】:2015-08-09 04:47:34
【问题描述】:

我正在尝试了解python-django。 我想制作名为书籍的自我应用。

当我运行这个命令时

$ python manage.py sqlall books

出现以下错误

CommandError:应用“图书”已迁移。应用有迁移时,只能使用 sqlmigrate 和 sqlflush 命令。

我不明白为什么会出现这个错误,这是什么意思?任何帮助,将不胜感激。谢谢

【问题讨论】:

  • 出于好奇,哪个 dkango 版本?

标签: python django


【解决方案1】:

来自sqlall的django文档

django-admin.py sqlall

打印给定的 CREATE TABLE 和初始数据 SQL 语句 应用名称。

在 django 从 1.7 开始的更高版本中,您可以这样做:

python manage.py sqlmigrate appname migration_name

当您按照 django 教程进行操作时,对于您的情况,这将是

python manage.py sqlmigrate books 0001

这在 django 1.8 中对我有用。您可以从sqlmigrate的文档中阅读更多内容

django-admin sqlmigrate

打印指定迁移的 SQL。这需要一个活动的数据库连接,它将用于解析约束名称;这意味着您必须针对您希望稍后应用它的数据库副本生成 SQL。

【讨论】:

  • 如何找到migration name
  • 您可以在 project/app/migrations 文件夹中找到所有迁移。
  • 谢谢。我也发现了这个命令python manage.py migrate --list
  • 仅供参考:--list 不再适用于较新版本的 django。相反,您必须运行“./manage.py showmigrations”
【解决方案2】:

输入python manage.py sqlall --help 后,我得到以下信息:

Prints the CREATE TABLE, custom SQL and CREATE INDEX SQL statements for the given model module name(s).

它打印用于创建这些表的 SQL。由于它们已经存在,Django 不会打印它们并指示使用 sqlmigrate(打印特定迁移的 SQL)或 sqlflush(打印将表返回到初始状态的 SQL)。

【讨论】:

    猜你喜欢
    • 2014-08-04
    • 2016-04-14
    • 2015-03-22
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2014-08-23
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多