【问题标题】:How do you remove all data after running syncdb?运行syncdb后如何删除所有数据?
【发布时间】:2015-01-16 05:10:39
【问题描述】:

我正在生产中,刚刚运行syncdb,但我犯了一个错误,想删除syncdb 所做的事情,包括表中的所有数据都可以。只是在数据库中重新开始,所以我可以再次运行 syncdb

(virtualenv-2.7)[root@server mysite]# python manage.py sqlclear mainapp | python manage.py dbshell
CommandError: One or more models did not validate:
app.comment: 'poster' defines a relation with the model 'auth.User', which has been swapped out. Update the relation to point at settings.AUTH_USER_MODEL.
app.myuser: The field named as the USERNAME_FIELD should not be included in REQUIRED_FIELDS on a swappable User model.

【问题讨论】:

  • 你使用什么样的数据库(MySQL、Postgres...等)?
  • drop database whatever_your_database_name; create databse whatever_your_database_name;?
  • @Raja 我只想再次运行syncdb
  • @Raja 你是什么意思?我做了一些更改,并希望从新填充它们。我可能会尝试 JOHN 解决方案

标签: python django python-2.7 django-1.7


【解决方案1】:

重新创建数据库可能是最好的方法。您也可以使用 django-extensions 包中的 reset_db 管理命令来完成。

【讨论】:

    【解决方案2】:

    Django 1.7 支持migrate 您只需在编辑后再次运行python manage.py migrate。 更多功能可看:release note

    【讨论】:

      【解决方案3】:

      正如 J0HN 在 cmets 中所说,重新开始的最佳做法实际上是删除数据库。我以为它可能会搞砸一些事情,但它不会。只需登录 mysql。

      drop database whatever_your_database_name;
      create databse whatever_your_database_name;
      

      然后只需再次与python manage.py syncdb同步

      【讨论】:

        【解决方案4】:

        也许它很懒,但我跑:

        django-admin.py reset_db --router=default --noinput
        

        【讨论】:

          猜你喜欢
          • 2016-04-01
          • 2019-06-04
          • 1970-01-01
          • 1970-01-01
          • 2013-06-10
          • 2022-09-22
          • 2022-10-18
          • 2014-04-12
          • 2015-04-19
          相关资源
          最近更新 更多