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的主要内容,如果未能解决你的问题,请参考以下文章