gpt4 book ai didi

ruby-on-rails - 迁移运行时在 db/structure.sql 上删除了 Postgresql 扩展

转载 作者:行者123 更新时间:2023-11-29 12:02:50 25 4
gpt4 key购买 nike

我有一个使用 postgresql 和一些扩展的 Rails 应用程序,但每次我运行 rails db:migrate 时,它都会删除启用扩展的行。我每次都必须手动复制和粘贴它。

db/structure.sql 中删除的行:

-- Name: EXTENSION "postgis"; Type: COMMENT; Schema: -; Owner: -
--

CREATE EXTENSION IF NOT EXISTS "postgis" WITH SCHEMA public;


--
-- Name: plpgsql; Type: EXTENSION; Schema: -; Owner: -
--

CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;


--
-- Name: EXTENSION plpgsql; Type: COMMENT; Schema: -; Owner: -
--

COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';


--
-- Name: pg_trgm; Type: EXTENSION; Schema: -; Owner: -
--

CREATE EXTENSION IF NOT EXISTS pg_trgm WITH SCHEMA public;


--
-- Name: EXTENSION pg_trgm; Type: COMMENT; Schema: -; Owner: -
--

COMMENT ON EXTENSION pg_trgm IS 'text similarity measurement and index searching based on trigrams';


--
-- Name: uuid-ossp; Type: EXTENSION; Schema: -; Owner: -
--

CREATE EXTENSION IF NOT EXISTS "uuid-ossp" WITH SCHEMA public;


--
-- Name: EXTENSION "uuid-ossp"; Type: COMMENT; Schema: -; Owner: -
--

COMMENT ON EXTENSION "uuid-ossp" IS 'generate universally unique identifiers (UUIDs)';

我的数据库.yml:

default: &default
adapter: postgis
encoding: unicode
host: <%= ENV.fetch('DB_HOST', 'localhost') %>
username: <%= ENV.fetch('DB_USERNAME') %>
password: <%= ENV.fetch('DB_PASSWORD') %>
schema_search_path: public

test:
<<: *default
database: db_test

development:
<<: *default
database: db_development

production:
<<: *default
database: db_production

有什么办法可以解决吗?

我正在使用以下版本:

postgresql: 9.6

zip :2.3

rails :5.0

苹果操作系统:10.12

更新:

我设法找到了解决该问题的方法。由于我将 schema_search_path 用作公共(public),如果未定义默认选项是公共(public)的。刚刚从 database.yml 中删除了这一行,它现在可以工作了。在显式定义 schema_search_path 时,仍然不知道为什么会发生这种情况。

最佳答案

您可以生成迁移并使用 enable_extension 方法:

class AddExtensions < ActiveRecord::Migration[5.1]
def change
enable_extension "postgis"
enable_extension "plpgsql"
enable_extension "pg_trgm"
enable_extension "uuid-ossp"
# ...
end
end

关于ruby-on-rails - 迁移运行时在 db/structure.sql 上删除了 Postgresql 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47790563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com