每次我在我的项目上运行 rake db:migrate
时,db/structure.sql
都会改变,我很高兴。不幸的是,这些更改不仅是对我的表的补充,而且还显式地使用我们的 tenant
关键字和 extensions
关键字。
db/structure.sql | 20278 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------------------------
1 file changed, 9565 insertions(+), 10713 deletions(-)
这是我迁移后有趣的 diff 的一部分:
-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 完成 Multi-Tenancy
有人知道为什么会这样吗?找不到太多,我为此苦苦挣扎了一段时间。
编辑:关于我的问题,我发现了 this但它适用于 postgres < 9.3
最佳答案
这很奇怪,但我会做出回应,以防其他人遇到同样的问题。
如果你在一个使用 db/xx.sql
文件的项目上,那么如果你打开它,你会在第一行看到 pg_dump
的版本和用于生成此转储的 postgres
。
为了在运行 db:migrate
时成功地从转储中恢复或清理此文件 db/xx.sql
,您必须安装完全相同的版本。它不适用于不同的主要/次要/版本(必须完全相同)
在我的例子中,第一行看起来像:
--
-- 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 更新日志中也没有看到更改。
很快我将创建一个自制的 tap 并将其作为示例。
关于ruby-on-rails - structure.sql 文件中的 search_path 被 rails db :migrate 修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52989311/