Postgresql 转储中“SET default_with_oids = true”的相关性是什么?

vfc*_*sts 5 postgresql postgresql-8.4

我有一个来自旧数据库的 SQL 备份,该数据库可能是我正在导入的 PostgreSQL 7 或 8 数据库,其中包含一个SET default_with_oids - true语句,到现有的 8.4 数据库中,并想知道相关性是什么以及它可能如何影响现有数据库。

我不认为原始数据库中实际使用了 OID。我可以简单地忽略它吗?

dez*_*zso 10

文件规定如下:

default_with_oids (boolean)

如果未指定 WITH OIDS 和 WITHOUT OIDS,这将控制 CREATE TABLE 和 CREATE TABLE AS 是否在新创建的表中包含 OID 列。它还确定 OID 是否将包含在由 SELECT INTO 创建的表中。该参数默认关闭;在 PostgreSQL 8.0 及更早版本中,默认情况下它是打开的。

在用户表中使用 OID 被视为已弃用,因此大多数安装应禁用此变量。需要特定表的 OID 的应用程序应在创建表时指定 WITH OIDS。可以启用此变量以与不遵循此行为的旧应用程序兼容。

请注意,随着 8.0 的到来,该功能已被弃用

这意味着,如果您打算按原样使用数据库,则可以在恢复之前安全地删除此行(您必须非常确定它们没有被引用)。它将保留设置为默认值false

如果您有一个处理此数据库的遗留应用程序,您也需要检查它是否以任何方式使用 OID。(目前我真的想不出这样的用例,但这可能是我想象力的弱点。)

旁注:您可能会在恢复转储时遇到一些其他问题 - 我记得隐式转换行为发生变化时出现了一些问题。