Database 运行python manage.py runserver时出现数据库错误

Database 运行python manage.py runserver时出现数据库错误,database,django,Database,Django,我在PowerShell上使用Django 1.4.3,在使用运行python manage.py后出现数据库错误 异常值: 1054,“字段列表”中的未知列“ventas_cliente.apellidos” 因此,我正在学习Django教程,我有一个项目的以下目录: demo/ demo/ apps/ ventas/ __init__.py admin.py

我在PowerShell上使用Django 1.4.3,在使用运行python manage.py后出现数据库错误 异常值:

1054,“字段列表”中的未知列“ventas_cliente.apellidos”

因此,我正在学习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,但客户给了我数据库错误


怎么了?我怀疑这与我的models.py文件有关,但我不知道为什么

您的model.py和代码不同步

命令 你是做什么的 检查模型,如果该模型不存在表,则创建表和匹配字段。如果表确实存在,则它对该表不做任何操作。因此,如果您添加了一个字段,那么syncdb(尽管听起来像是这样)将不会在数据库中创建自上次syncdb以来添加的字段

如果要同步模型和代码,必须删除表,以便syncdb创建它们。您可以使用:

$ python manage.py flush  
将数据库返回到执行syncdb后立即处于的状态。
来源

我怀疑你以前改变过你的模式?只是个主意。为什么不现在加载一个sqlite数据库,运行syncdb,看看它是否工作。如果是这样,当前数据库中的架构可能不同步,syncdb无法处理它。syncdb不处理已创建数据库的已更改架构。如果我的怀疑是正确的,尝试向南迁移。将settings.py中的db更改为新的sqlite db,即使您已经在使用postgresql或mysql。只是为了现在测试。@是的,syncdb仍然有效。只是为了确保我们在同一页上。您的意思是,在将settings.py指向一个新的sqlite3 db之后,您可以进入admin?@CppLearner,请参见上文。让我们澄清一下。此错误通常表明您的表架构已过时。问问自己最近是否更换了models.py。如果是这样,请转到seetings.py,将数据库更改为sqlite3。这不会删除mysql数据库。您只需断开django与它的连接几分钟。运行syncdb,然后运行server,转到admin,查看是否有任何错误。如果您仍然不想执行上述操作,那么可以转到MySQL,检查您的cliente表,看看是否可以找到apellido属性。我想排除一个可能的原因:你不想丢掉桌子。不要这样做。你必须养成迁移的习惯。当您使用生产代码和具有实时数据的生产环境时,您将如何进行迁移?这一点很好。如果你想成为一个专业人士考虑投资和学习南方或进化。如果您想修复错误并继续编码,这将很好地工作。是的。这是真的,但是,他甚至不明白为什么它不起作用。他使用的是MySQL,我认为这比在开发模式中使用sqlite3要好得多。如果他使用的是sqlite3,我们只会说去他妈的,删除它。您应该向他建议正确的做法,但要警告他在开发模式期间的快速解决方法:pAlso,有一个包括固定装置和运行刷新的设置是一个很好的开发实践。
$ python manage.py flush