rails db:migrate修改了structure.sql文件中的search_path

时间:2018-10-25 12:30:04

标签: ruby-on-rails postgresql postgresql-9.6 dbmigrate apartment-gem

每次我在项目上运行rake db:migrate时,db/structure.sql都会发生变化,我感到很高兴。不幸的是,这些更改不仅增加了我的表,而且还显式地使用了我们的tenant关键字和extensions关键字。

db/structure.sql | 20278 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------
1 file changed, 9565 insertions(+), 10713 deletions(-)

这是我迁移后有趣的差异的一部分:

-CREATE FUNCTION _final_median_function(anyarray) RETURNS double precision
+CREATE FUNCTION extensions._final_median_function(anyarray) RETURNS double precision

这是表格的示例:

-SET search_path = at, pg_catalog;
-CREATE TABLE advert_all_clicks (
+CREATE TABLE at.advert_all_clicks (

Postgres 9.6.10(也经过测试,它发生在10. +中) 多租户使用apartment

有人知道为什么会这样吗?找不到太多,我正在与之抗争一段时间。

编辑:关于我的问题,我发现了this,但它适用于Postgres <9.3

1 个答案:

答案 0 :(得分:0)

这很奇怪,但是如果有人遇到相同的问题,我将做出回应。

如果您正在使用db/xx.sql文件的项目中,然后将其打开,则在第一行中,您将看到pg_dumppostgres的版本生成此转储。

为了从转储中成功还原或运行db/xx.sql时清理此文件db:migrate,您必须安装相同的版本。它不适用于其他主要/次要/发行版本(必须完全相同)

在我的情况下,第一行看起来像:

--
-- PostgreSQL database dump
--

-- Dumped from database version 9.6.5
-- Dumped by pg_dump version 9.6.5

我尝试安装9.6.10(当前为postgresql@9.6)和其他不同版本。直到我从源代码准确地编译了9.6.5为止,它一直困扰着我的文件。

找不到对此的解释,我也看不到9.6.x更改日志中的更改。

很快,我将创建一个自制的点击,并在此处作为示例。