我需要将数据库从PostgreSQL 12传输到PostgreSQL 9.2.24。我尝试从PostgreSQL 12备份我的数据库,并在PostgreSQL 9.2.24上进行恢复,但我不能这样做,因为会出现如下错误:
LINE 1: SELECT pg_catalog.setval('public.schemas_headers_types_id_se...
^
LINE 2: ADD CONSTRAINT user_id PRIMARY KEY (id) INCLUDE (id);
^
Command was: ALTER TABLE ONLY public.users
..。
我无法将数据库版本从PostgreSQL 9.2.24更新到PostgreSQL 12,因为我的主机提供商不允许我这样做。为什么我不能真正地将我的数据库从PostgreSQL 12转移到PostgreSQL 9.2.24?
发布于 2020-04-29 01:35:08
您必须编辑转储文件来删除INCLUDE (id)
(这是INCLUDE特性的一个非常无用的用法,因为要将同一列包含两次)。但谁知道你会发现多少后续错误呢?
我的主机提供商不允许我这样做
看起来真正的解决方案是找到一个不同的主机提供商。
发布于 2020-04-29 01:38:47
pg_dump说...
此外,不能保证pg_ dump的输出可以加载到较早的主版本的服务器中-即使转储是从该版本的服务器获取的。将转储文件加载到较旧的服务器可能需要手动编辑转储文件,以删除较旧的服务器无法理解的语法。建议在跨版本情况下使用--quote-all-identifiers选项,因为它可以防止在不同的PostgreSQL版本中因不同的保留字列表而引起的问题。
include
是Postgres9.2中根本不存在的特性。如果可能,这些功能和其他功能将不得不替换为替代功能。
9.2.24 reached its end-of-life in November 2017。你可以利用这个事实让你的提供商升级。如果不是,请考虑是否要使用拒绝更新不再支持的软件的主机提供商。
https://stackoverflow.com/questions/61485877
复制相似问题