Django正在为Postgres生成无效的SQL

时间:2013-02-11 06:26:56

标签: python sql django postgresql

我是noob django用户,我在使用Model.objects.all方法时遇到了一些麻烦。 我有一个用户模型: (我知道在明文中保存密码是不好的做法,但这应该只是一个玩具示例)

class UsersModel(models.Model):
    password = models.CharField(max_length=MAX_PASSWORD_LENGTH)
    user = models.CharField(max_length=MAX_USERNAME_LENGTH, primary_key=True)
    count = models.IntegerField()

我有一个测试方法,它应该删除用户表中的所有条目:

def function(self):
    UsersModel.objects.all().delete()

出于某种原因,调用UsersModel.objects.all()会引发错误

DatabaseError: column "cs169proj1_usersmodel.user" must appear in the GROUP BY clause or 
be used in an aggregate function
LINE 1: SELECT "cs169proj1_usersmodel"."user", "cs169proj1_usersmode...

从谷歌搜索,我发现SQL中的这个特殊错误只出现在Postgresql(我正在使用)上。任何人都知道如何解决/解决这个问题?

2 个答案:

答案 0 :(得分:4)

将列名称 count 错误解释为aggregate function

最佳解决方案:切勿使用reserved words作为标识符。

答案 1 :(得分:2)

在使用postgresql进行制作时,从django 1.6升级到1.9.8时遇到了simillar问题。

在我的情况下,问题是由于Django 1.9的变化,至少需要postgresql 9.1,如here所述。

针对redhat / centos here的好postgresql更新说明。