【问题标题】:force delete row on django app after migration迁移后强制删除 django 应用程序上的行
【发布时间】:2010-06-08 22:49:48
【问题描述】:

在向南迁移后,我最终删除了一个列。现在我的一张表中的当前数据搞砸了,我想删除它,但尝试删除只会导致错误:

>>> d = Degree.objects.all()
>>> d.delete()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Python26\lib\site-packages\django\db\models\query.py", line 440, in d
elete
    for i, obj in izip(xrange(CHUNK_SIZE), del_itr):
  File "C:\Python26\lib\site-packages\django\db\models\query.py", line 106, in _
result_iter
    self._fill_cache()
  File "C:\Python26\lib\site-packages\django\db\models\query.py", line 760, in _
fill_cache
    self._result_cache.append(self._iter.next())
  File "C:\Python26\lib\site-packages\django\db\models\query.py", line 269, in i
terator
    for row in compiler.results_iter():
  File "C:\Python26\lib\site-packages\django\db\models\sql\compiler.py", line 67
2, in results_iter
    for rows in self.execute_sql(MULTI):
  File "C:\Python26\lib\site-packages\django\db\models\sql\compiler.py", line 72
7, in execute_sql
    cursor.execute(sql, params)
  File "C:\Python26\lib\site-packages\django\db\backends\util.py", line 15, in e
xecute
    return self.cursor.execute(sql, params)
  File "C:\Python26\lib\site-packages\django\db\backends\sqlite3\base.py", line
200, in execute
    return Database.Cursor.execute(self, query, params)
DatabaseError: no such column: students_degree.abbrev
>>>

有没有一种简单的方法来强制删除?我是否删除表,然后重新运行 manage.py schemamigration 以在南部重新创建表?

【问题讨论】:

    标签: django django-south


    【解决方案1】:

    你可以使用

    python manage.py reset [YOUR APP NAME]
    

    但它会从该应用的所有表中删除所有数据。

    或者您可以运行普通的旧 sql,删除该表并重新运行迁移

    > mysql -p -h HOST -u USER DATABASE_NAME
    >> DROP TABLE APPNAME_degree;
    >> exit;
    > python manage.py migrate
    

    【讨论】:

      猜你喜欢
      • 2015-04-08
      • 1970-01-01
      • 1970-01-01
      • 2023-01-27
      • 2017-12-31
      • 2018-10-19
      • 2016-04-14
      • 2018-02-07
      • 1970-01-01
      相关资源
      最近更新 更多