有没有办法让Postgres告诉你除了它在/附近的语法错误是什么?

时间:2016-05-06 01:44:30

标签: postgresql postgresql-9.5

我已尝试设置' log_min_error_statement'等于postgresql.conf中的debug5,但我仍然得到标准" PostgreSQL说:语法错误在或附近" AS""控制台和postgresql日志中的错误消息。

1 个答案:

答案 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