为什么我在 structure.sql 中看到 `SET xmloption = content;`?
Why am I seeing `SET xmloption = content;` in my structure.sql?
我正在使用 Rails 6,最近写了一个小的迁移来向 table 添加一列。简单的东西:
class AddInstagramUsernameToUsers < ActiveRecord::Migration[6.0]
def change
add_column :users, :instagram_username, :string
end
end
但是注意到,当我 运行 迁移时,我看到以下行添加到我的 structure.sql 中:
SET xmloption = content;
我并不是特别担心它,(诚然 documentation 描述该选项使它看起来非常无害)但不希望有这么小的迁移更改任何元 postgres 东西。我尝试降级到 Rails 5 以摆脱这条线,但没有成功。我正在使用 postgres 版本 10.8,最近没有升级。
目前我不知道是什么添加了这一行,如果可能的话我想去掉它。有人知道是什么导致 this/how 阻止它吗?
Rails 不会生成 structure.sql
——它会生成 PostgreSQL 的 built-in pg_dump 工具。根据 Active Record Migrations Rails Guide:
When the schema format is set to :sql
, the database structure will be dumped using a tool specific to the database into db/structure.sql
. For example, for PostgreSQL, the pg_dump
utility is used.
在您的 structure.sql
中生成该行的是 pg_dump。
据我所知,它这样做的原因是,当从 pg_dump 文件恢复时,不能假设目标数据库具有相同的 xmloption
设置源数据库。如果没有这一行,用户可能 运行 遇到 this bug report. The change was included in PostgreSQL 9.4.22—specifically commit 8ba48542.
中描述的问题
没有办法禁用它,也没有理由这样做。
我正在使用 Rails 6,最近写了一个小的迁移来向 table 添加一列。简单的东西:
class AddInstagramUsernameToUsers < ActiveRecord::Migration[6.0]
def change
add_column :users, :instagram_username, :string
end
end
但是注意到,当我 运行 迁移时,我看到以下行添加到我的 structure.sql 中:
SET xmloption = content;
我并不是特别担心它,(诚然 documentation 描述该选项使它看起来非常无害)但不希望有这么小的迁移更改任何元 postgres 东西。我尝试降级到 Rails 5 以摆脱这条线,但没有成功。我正在使用 postgres 版本 10.8,最近没有升级。
目前我不知道是什么添加了这一行,如果可能的话我想去掉它。有人知道是什么导致 this/how 阻止它吗?
Rails 不会生成 structure.sql
——它会生成 PostgreSQL 的 built-in pg_dump 工具。根据 Active Record Migrations Rails Guide:
When the schema format is set to
:sql
, the database structure will be dumped using a tool specific to the database intodb/structure.sql
. For example, for PostgreSQL, thepg_dump
utility is used.
在您的 structure.sql
中生成该行的是 pg_dump。
据我所知,它这样做的原因是,当从 pg_dump 文件恢复时,不能假设目标数据库具有相同的 xmloption
设置源数据库。如果没有这一行,用户可能 运行 遇到 this bug report. The change was included in PostgreSQL 9.4.22—specifically commit 8ba48542.
没有办法禁用它,也没有理由这样做。