【发布时间】:2017-12-13 10:20:19
【问题描述】:
我有一个使用 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
postgis:2.3
导轨:5.0
macOS:10.12
更新:
我设法找到了解决该问题的方法。由于我使用schema_search_path 作为公共,如果未定义默认选项是公共的。刚刚从 database.yml 中删除了这一行,它现在可以工作了。在明确定义 schema_search_path 时仍然不知道为什么会发生这种情况。
【问题讨论】:
标签: ruby-on-rails postgresql postgis database-migration