【问题标题】:psql syntax error, possibly on '-', when importing a dump导入转储时 psql 语法错误,可能在“-”上
【发布时间】:2015-02-12 16:04:06
【问题描述】:

(使用 postgres 9.4beta2)

我有一个要导入的转储。我已经使用“psql”命令完成了这项工作,因为在其他地方注意到使用 COPY FROM stdin 时需要这样做:

psql publishing < publishing.dump.20150211160001 

我得到这个语法错误:

ERROR:  syntax error at or near "fbc61bc4"
LINE 1: fbc61bc4-2875-4a3a-8dec-91c8d8b60bcc root

转储文件中的违规行是 COPY 语句之后的那一行,这里将这两行放在一起:

COPY content_fragment (id, content, name, content_item_id, entity_version) FROM stdin;
fbc61bc4-2875-4a3a-8dec-91c8dcontent    Content for root        content fbc61bc4-2875-4a3a-8dec-91c8d8b60bcc    0

数据中的项目似乎是制表符分隔的。我想知道错误消息在“fbc61bc4”处或附近显示,但完整的字符串是“fbc61bc4-2875-4a3a-8dec-91c8dcontent”,psql 不喜欢“-”字符吗?

【问题讨论】:

  • beta2,为什么?至少使用生产就绪版本,beta2 有一些严重的错误。而且psql(客户端)和数据库(服务器)的版本不同,请检查两者。
  • 好的,我不知道我是如何或为什么最终选择了 beta2,但我会解决这个问题并报告回来......
  • 我安装了 9.3.6 版,一切正常。

标签: database postgresql syntax dump psql


【解决方案1】:

COPY 本身失败时会发生这种错误,因为表不存在,或者提到的列之一不存在,或者用户没有写入权限等等......

COPY 失败时,SQL 解释器会继续下一行并将其解释为好像是一条 SQL 语句,尽管它实际上是要提供给COPY 的数据。通常这会导致语法错误,前面是说明COPY 失败原因的错误(如果有很多数据行,通常会出现大量错误)。

查看另一个问题:psql invalid command \N while restore sql,它具有相同的根本原因并且有一些有用的 cmets。

【讨论】:

  • 谢谢。该文件是用 pg_dump 创建的,管理员告诉我他今天成功地在另一个盒子上重新导入了一个文件(不一定是这个)。明天我回来工作时会仔细检查一下。
猜你喜欢
  • 1970-01-01
  • 2015-03-29
  • 2016-12-03
  • 2020-12-21
  • 1970-01-01
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多