Postgresql-无法识别的配置参数

Postgresql-无法识别的配置参数,postgresql,psql,Postgresql,Psql,我从外部服务器导出了postgresql数据库,并试图将其导入本地服务器,但出现以下错误: unrecognized configuration parameter "idle_in_transaction_session_timeout" 这种错误是否意味着这两台服务器使用的是不同版本的postgresql?我调查了一下,外部服务器正在运行: version PostgreSQL 9.5.4 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 4.

我从外部服务器导出了postgresql数据库,并试图将其导入本地服务器,但出现以下错误:

unrecognized configuration parameter "idle_in_transaction_session_timeout"
这种错误是否意味着这两台服务器使用的是不同版本的postgresql?我调查了一下,外部服务器正在运行:

version
PostgreSQL 9.5.4 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit 
version
PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609, 64-bit 
我的服务器正在运行:

version
PostgreSQL 9.5.4 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit 
version
PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609, 64-bit 
差不多一样。是否有一个站点可以看到每个版本的所有有效配置参数?有没有一种方法可以像这样同步两个数据库,从而自动修补这样的不兼容?

根据9.6版中引入的
idle\u in\u transaction\u session\u timeout
参数

E.2.3.1.10。服务器配置

允许在会话处于活动状态时自动终止会话 在事务状态下空闲时间过长(害怕Vik)

此行为由新的配置参数控制 空闲\u在\u事务\u会话\u超时。这有助于预防疾病 因持有锁或阻止真空清理而忘记的事务 太久了

由于您在服务器上使用的是9.5版,因此无法识别该参数


您可能使用Postgresql客户端的9.6版本从源9.5服务器导出数据,并且该参数是在转储文件中引入的。如果是这种情况,我建议使用9.5客户端版本来导出和导入数据

公认的答案是可行的,但如果由于某种原因您无法升级版本,这里有一个解决方法

  • 使用纯文本导出。您可能也想使用压缩
    pg_dump-F c-Z 9 dbname>file.zip
  • 在导入之前,我们需要删除有问题的参数。为此,我们可以使用zcat和grep
    zcat file.zip | grep-vw“空闲在事务中|会话|超时”| psql-d newdb

  • 请注意,使用psql而不是pg_导入存在缺点。例如,不能使用-j同时导入

    一定是这样。我在安装了9.6的Windows主机上用Postgresql Maestro(它是一个类似pgadmin的管理工具)进行了备份。但是来宾机有9.5。我备份的数据库也在运行9.5,因此Maestro在进行备份时似乎没有考虑外部服务器的版本。我有PostgreSQL v13.1,但仍然看到错误