【发布时间】:2013-02-13 19:59:21
【问题描述】:
我在 PowerShell 上使用 Django 1.4.3,运行 python manage.py 后出现数据库错误
异常值:
(1054, "Unknown column 'ventas_cliente.apellidos' in 'field list'")
所以我正在关注一个 Django 教程,并且我有一个项目的以下目录:
demo/
demo/
apps/
ventas/
__init__.py
admin.py
models.py
tests.py
views.py
__init.py
__init__.py
settings.py
urls.py
wsgi.py
manage
在 admin.py 下我有:
from django.contrib import admin
from demo.apps.ventas.models import cliente.producto
# Register the ventas models
admin.site.register(cliente)
admin.site.register(producto)
从models.py,
from django.db import models
class cliente(models.Model):
nombre = models.CharField(max_length=200)
apellidos = models.CharField(max_length=200)
status = models.BooleanField(default=True)
class producto(models.Model):
nombre = models.CharField(max_length=200)
descripcion = models.TextField(max_length=300)
status = models.BooleanField(default=True)
我正在使用 MySQL,但我没有更改数据库。 runserver 确实有效,我可以访问 localhost:8000/admin。我有一个名为“ventas”的新类别,其中包含“cliente”和“producto”子类别。我可以访问“producto”,但“cliente”给了我数据库错误。
似乎有什么问题?我怀疑这与我的 models.py 文件有关,但我不知道为什么。
【问题讨论】:
-
我怀疑您以前更改过架构?只是一个想法。你为什么不现在加载一个 sqlite 数据库,运行 syncdb 看看它是否有效。如果是这样,则当前数据库中的架构可能不同步并且 syncdb 没有处理它。 syncdb 不处理已创建数据库的更改架构。如果我的怀疑是正确的,请尝试向南迁移。将 settings.py 中的 db 更改为新的 sqlite db,即使您已经在使用 postgresql 或 mysql。现在只是为了测试。
-
@CppLearner 是的,
syncdb仍然有效。 -
只是为了确保我们在同一页面上。你是说在将 settings.py 指向一个新的 sqlite3 数据库之后,你可以进入 admin 了吗?
-
@CppLearner 见上文。
-
让我们澄清一下。此错误通常表明您的表架构已过时。问问自己最近是否更改了 models.py。如果是这样,转到seetings.py,将数据库更改为sqlite3。这不会擦除 mysql 数据库。您只需断开 django 与它的连接几分钟。运行syncdb然后runserver,进入admin看看有没有错误。如果您仍然不想执行上述操作,那没关系,请转到 MySQL,检查您的
cliente表,看看是否可以找到apellido属性。我想排除一个可能的原因:p