未识别的配置参数 "default table access method" Google Cloud

26

我试图将一些文件导入到PostgreSQL数据库中,但是出现了这个错误:

Falha Importar: 
SET 
SET 
SET 
SET 
SET 
set_config ------------ 
(1 row) 
SET 
SET 
SET 
SET 
SET 
Import error: exit status 3 ERROR: unrecognized configuration parameter "default_table_access_method"

你好,能否请您与我们分享一下您是如何导入和导出数据库的呢? - Chris32
2个回答

44
你正在将一个基于较早版PostgreSQL的东西导入一个PostgreSQL v12的pg_dump
这个错误是无害的(参数default_table_access_method是在v12中引入的),但你可能会遇到其他新的v12功能而产生更有趣的问题。如果导入的其余部分没有错误,那么你可能没问题了,但要记住,降级PostgreSQL是不受支持的。
最好始终使用相同版本。如果你不能在本地使用相同版本,因为托管数据库是封闭源代码分支,那么这是反对使用它的一个好理由。

4
我有一些最初的数据集和表设置,我知道它们可以在多个PSQL版本中运行 -> sed -i 's/SET default_table_access_method = heap;/-- SET default_table_access_method = heap;/' <DUMP>是一个可行的解决方案。 - AdamKalisz
1
@AdamKalisz,这个问题还有另一个优雅的解决方案 - 只需使用PSQL元命令,就可以在将脚本导入旧版本时跳过某些部分。例如,要跳过v12中引入的语句,可以将它们包装在\if :VERSION_NUM >= 120000 ... \endif中(应为多行)。请参阅https://www.postgresql.org/docs/10/app-psql.html。 - AntonK

5

以下是我的解决方法:

  1. 使用pdAdmin导出,设置为SQL、纯文本,并选择"仅模式"选项,保存到本地文件夹。
  2. 编辑SQL文件(纯文本格式)。
  3. 将"-- error from V 12 : SET default_table_access_method = heap;"注释掉。
  4. 使用pgAdmin或其他工具运行SQL脚本文件。
  5. 再次导出源数据库,选择"仅数据"和"备份"选项。
  6. 恢复仅包含数据的备份文件。

对我来说这个方法可行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接