Php 推进(PostgreSQL)语法错误位于或接近“0”&引用;

Php 推进(PostgreSQL)语法错误位于或接近“0”&引用;,php,postgresql,propel,Php,Postgresql,Propel,我已经建立了一个数据库(目前只有两个表在进行中:用户和电子邮件),并与Prope集成。注册用户时,我会检查以确保电子邮件不存在(作为电子邮件表中的当前电子邮件或用户数据库中的原始电子邮件) 为了简单地使用propel实现这一点,我使用以下方法: if(EmailQuery::create()->filterByCurrent(TRUE)->findOneByEmailAddress($email) != NULL) { // email address being used

我已经建立了一个数据库(目前只有两个表在进行中:用户和电子邮件),并与Prope集成。注册用户时,我会检查以确保电子邮件不存在(作为电子邮件表中的当前电子邮件或用户数据库中的原始电子邮件)

为了简单地使用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或near.“
由Prope生成的SQL查询如下所示:

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
}
选择user.id、user.original\u email、user.password、user.accept\u terms、user.paid、user.customer\u id、user.trial\u end、user.created\u at、user.updated\u at、user.ip\u address FROM user WHERE user.original\u email=:p1 LIMIT 1


如果我将其复制并粘贴到phpPgAdmin中,它将返回相同的错误(并指向用户和列之间的each.in)。我是PostgreSQL的新手,是否缺少一些语法片段?我使用过的所有其他Propel查询生成器都工作顺利。

回答minitech的评论


user
是一个保留的ANSI SQL术语。要么
选择“user”。必须使用“user”
中的id,要么必须重命名表。我将表重命名为
帐户
,一切正常。

回答
minitech
的评论


user
是一个保留的ANSI SQL术语。要么
选择“user”。必须使用“user”
中的id,要么必须重命名表。我将表重命名为
account
,一切正常。

user
可能是一个保留字;试试
“user”。(无论什么)
@minitech如果成功,我将重命名我的表。你能添加这个作为答案吗,这样我就可以选择你了?@minitech:notmay:is
user
可能是一个保留字;试试
“user”。(无论什么)
@minitech如果成功,我将重命名我的表。你可以添加这个作为答案,这样我就可以选择你了吗?@minitech:not may:is只是想澄清一下,那必须是PostgreSQL保留字,因为我可以在MySQL中使用
user
而不使用引号。此外,您(@Sam)可能希望将其添加为一个。(似乎可以通过在生成的SQL中引用表名来解决。)将更新我的答案并将其作为一个问题添加,感谢您提供的额外信息。这绝对是一个恼人的调试错误,可以通过Propel避免。@jakerella:根据ANSI,这是一个保留字SQL@a_horse_with_no_name:您能提供文档的链接吗?它是否在规范中是一回事,但在实践中,MySQL似乎没有保留它(或者足够聪明,知道什么时候它没有被用作关键字)。实际上,这应该作为一个Propel bug提交,生成的SQL应该引用表名(以及字段名)。@jakerella:请看这里:这里:需要澄清的是,这必须是一个PostgreSQL保留字,因为我可以在MySQL中使用
user
,而不使用引号。此外,您(@Sam)可能希望将其添加为一个。(似乎可以通过在生成的SQL中引用表名来解决。)将更新我的答案并将其作为一个问题添加,感谢您提供的额外信息。这绝对是一个恼人的调试错误,可以通过Propel避免。@jakerella:根据ANSI,这是一个保留字SQL@a_horse_with_no_name:您能提供文档的链接吗?它是否在规范中是一回事,但在实践中,MySQL似乎没有保留它(或者足够聪明,知道什么时候它没有被用作关键字)。实际上,这应该作为一个推进bug提交,生成的SQL应该引用表名(以及字段名)。@jakerella:请看这里:这里: