我从外部服务器导出了一个postgresql数据库,并试图将其导入我的本地服务器,但是出现了这个错误:
@Query("select s.subscription from subscription_categories s where s.categories = ?1")
List<Subscription> findUsernameByCategory(String category);
@Query("select s.subscription from categories s where s.categories = ?1")
List<Subscription> findUsernameByCategory(String category);
这种错误是否意味着两台服务器使用不同版本的postgresql?我调查了一下,外部服务器正在运行:
unrecognized configuration parameter "idle_in_transaction_session_timeout"
我的服务器正在运行:
version
PostgreSQL 9.5.4 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64-bit
几乎是一回事。是否有一个站点,您可以在其中查看每个版本的所有有效配置参数?有没有办法同步这样的两个数据库,所以这样的不兼容性会自动修补?
答案 0 :(得分:42)
根据Postgresql 9.6 Release Notes版本9.6中引入了idle_in_transaction_session_timeout
参数。
E.2.3.1.10。服务器配置
允许会话自动终止 闲置交易状态太长时间(Vik Fearing)
此行为由新配置参数控制 idle_in_transaction_session_timeout。防止它是有用的 忘记了锁定或防止真空清理的交易 太久了。
由于您在服务器上使用的是9.5版,因此无法识别该参数。
您可能使用Postgresql客户端的9.6版本从源9.5服务器导出数据,并且该参数是在转储文件中引入的。如果是这种情况,我建议使用9.5客户端版本导出和导入数据。
答案 1 :(得分:1)
接受的答案是要走的路,但如果由于某种原因你无法升级版本,这里有一个解决方法。
pg_dump -F c -Z 9 dbname > file.zip
zcat file.zip | grep -vw "idle_in_transaction_session_timeout" | psql -d newdb
请注意,使用psql而不是pg_import存在缺点。例如,不能使用-j同时导入。