Django South 向管理员添加了模型,但给出了 DatabaseError

Posted

技术标签:

【中文标题】Django South 向管理员添加了模型,但给出了 DatabaseError【英文标题】:Django South added model to admin but gives DatabaseError 【发布时间】:2012-11-18 13:43:01 【问题描述】:

我刚刚开始使用带有 现有 应用程序的南,在将新模型添加到数据库后,我可以在管理员中查看模型,但是当单击它们以查看模型详细信息时一个错误

我尝试做南方等价的syncdb:

python manage.py schemamigration directory --initial

python manage.py migrate directory

其中目录是应用名称。

所以当我尝试在管理员中查看模型时,我得到以下信息:

Exception Type: DatabaseError

Exception Value: (1146, "Table 'omada.directory_drift' doesn't exist")

其中 Drift 是我添加到 models.py 中的模型,然后在 admin.py 中注册 - omada 是站点名称。

更多信息:

来自 django 站点的回溯以:

File "/usr/local/lib/python2.7/dist-packages/django/db/backends/mysql/base.py" in execute


  114.             return self.cursor.execute(query, args) File "/usr/local/lib/python2.7/dist-packages/MySQL_python-1.2.4b5-py2.7-linux-i686.egg/MySQLdb/cursors.py" in execute
  201.             self.errorhandler(self, exc, value) File "/usr/local/lib/python2.7/dist-packages/MySQL_python-1.2.4b5-py2.7-linux-i686.egg/MySQLdb/connections.py" in defaulterrorhandler
  36.     raise errorclass, errorvalue

执行时

python manage.py migrate directory

我收到一个以以下开头的错误:

FATAL ERROR - The following SQL query failed: CREATE TABLE `directory_building`
 ! Since you have a database that does not support running
 ! schema-altering statements in transactions, we have had
 ! to leave it in an interim state between migrations.

这听起来不太有希望:S,并以:

  File "/usr/local/lib/python2.7/dist-packages/MySQL_python-1.2.4b5-py2.7-linux-i686.egg/MySQLdb/connections.py", line 36, in defaulterrorhandler                
    raise errorclass, errorvalue
django.db.utils.DatabaseError: (1050, "Table 'directory_building' already exists")

提前感谢所有花时间阅读本文并提供帮助的人!

【问题讨论】:

【参考方案1】:

您可能会发现这个guide 很有用。

由于您只是从南方开始,我建议您从头开始:

    从数据库中删除南表 (south_migrationhistory)

    从 app.migrations 文件夹中删除迁移

    按照指南进行操作

在恶劣的状态下进入南方很容易,因此您只需要获得一些经验即可。然而,随着您的项目规模不断扩大,您将离不开它。

【讨论】:

以上是关于Django South 向管理员添加了模型,但给出了 DatabaseError的主要内容,如果未能解决你的问题,请参考以下文章

使用 Django/South 重命名模型的最简单方法?

如何在 Django 中使用 South 将数据从一个模型迁移到另一个模型?

Django - 如何使用 South 重命名模型字段?

使用 south 重构具有继承的 Django 模型

将 South 添加到 Django 项目、开发和生产中

如何向具有多对一关系的模型的 Django 管理员添加可排序的计数列?