我已尝试设置' log_min_error_statement'等于postgresql.conf中的debug5,但我仍然得到标准" PostgreSQL说:语法错误在或附近" AS""控制台和postgresql日志中的错误消息。
答案 0 :(得分:2)
如果PostgreSQL知道错误是什么,请至少在大多数情况下告诉你。
如果只是说"语法错误在...附近..."它不知道你的意思,也无法猜出是什么错。这是一个解析错误。它可以提供(非常长的)建议列表,但是这会使错误消息荒谬冗长,例如:
postgres=# SELECT AS fred ORDER BY 1;
ERROR: syntax error at or near "AS"
LINE 1: SELECT AS fred ORDER BY 1;
是的,这是一个语法错误,因为它在任何级别上都没有意义。它有什么问题?你如何简洁地描述这一点?解析器如何判断错误是什么?
postgres=# SELECT AS fred ORDER BY 1;
ERROR: syntax error at or near "AS"
LINE 1: SELECT AS fred ORDER BY 1;
HINT: typo?
HINT: Did you use a reserved keyword as an identifier without "quoting" it? Like "AS"?
HINT: Did you leave out the value before the AS keyword?
HINT: ... endless possibilities ...
有时,解析器可以猜出你可能做错的事情。 PostgreSQL的解析器试图告诉你何时可以,例如
psql -c "SELECT 'openquote";
ERROR: unterminated quoted string at or near "'openquote"
LINE 1: SELECT 'openquote