Propel (PostgreSQL)语法错误在"或附近


Propel (PostgreSQL) syntax error at or near "."

我有一个数据库设置(工作正在进行中,目前只有两个表:用户和电子邮件),并与Propel集成。当注册一个用户时,我检查以确保该电子邮件不存在(要么作为电子邮件表中的当前电子邮件,要么作为用户数据库中的原始电子邮件)。

为了简单地使用propel,我使用以下命令:

if(EmailQuery::create()->filterByCurrent(TRUE)->findOneByEmailAddress($email) != NULL) {
    // email address being used currently
} else if(UserQuery::create()->findOneByOriginalEmail($email) != NULL) {
    // email address claimed on account already
}

第一个查询工作正常,但第二个查询生成和错误:Syntax error: 7 ERROR: syntax error at or near "."由Propel生成的SQL查询如下:

SELECT user.id, user.original_email, user.password, user.accept_terms, user.paid, user.customer_id, user.trial_end, user.created_at, user.updated_at, user.ip_address FROM user WHERE user.original_email=:p1 LIMIT 1

如果我复制并粘贴到phpPgAdmin,它返回相同的错误(并指向每个。在用户和列之间)。我是新的PostgreSQL,有一些语法块我失踪了吗?我使用过的所有其他Propel查询生成器都工作得很顺利。

minitech评论的回答

user是一个保留的ANSI SQL术语。要么使用SELECT "user".id FROM "user",要么重命名表。我把表重命名为account,一切都好。