rails3、postgresql 和 postGIS:在迁移中冻结

Posted

技术标签:

【中文标题】rails3、postgresql 和 postGIS:在迁移中冻结【英文标题】:rails3, postgresql & postGIS: frozen in migrations 【发布时间】:2014-08-06 16:42:03 【问题描述】:

我发现自己忙于测试有关 postGIS 的各种元素。不得不回溯……爆炸​​!

我试过了

rake db:migrate VERSION=0
rake db:drop
dropdb development_db_name

而且,甚至使用 psql 命令行

DROP DATABASE v4_development;
DROP DATABASE v4_test;

psql 不再列出那些数据库 我总是以

告终
PG::UndefinedTable: ERROR:  relation "geometry_columns" does not exist
LINE 1: SELECT * FROM geometry_columns WHERE f_table_name='schema_mi...
                      ^
: SELECT * FROM geometry_columns WHERE f_table_name='schema_migrations'

(删除并重新创建数据库后...) 我什至尝试从 postgresql 命令行中进行以下操作

CREATE SCHEMA postgis;
CREATE EXTENSION PostGIS WITH SCHEMA postgis;
GRANT ALL ON postgis.geometry_columns TO PUBLIC;
GRANT ALL ON postgis.spatial_ref_sys TO PUBLIC;

没有骰子。 pg_dump 确实表明扩展已创建

CREATE SCHEMA postgis;
ALTER SCHEMA postgis OWNER TO jerdvo;
CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';
CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA postgis;
COMMENT ON EXTENSION postgis IS 'PostGIS geometry, geography, and raster spatial types and functions';

CREATE TABLE schema_migrations (
    version character varying(255) NOT NULL
);

有些东西出了差错,我也想重新开始。但我以为我已经做到了。 其他数据库不受影响(未全部检查)。

【问题讨论】:

这似乎与 ***.com/questions/12190178/… 重复 恐怕不行。我已经经历过几次这些麻烦(甚至解决了一个早期的问题) 添加一个点,向后迁移时会弹出相同的错误(-ped)。 【参考方案1】:

花了很长时间才找到罪魁祸首。希望这对任何安装 postGIS 和尝试导致迁移发生变化的人有所帮助。

从根本上说,添加一个通过 postGIS 和 postgre 索引的变量,例如:

add_column :structures, :lonlat, :point, :geographic => true
add_index  :structures, :lonlat, using: 'GIST'

需要调用初始化程序(英国拼写)

Rails.application.config.after_initialize do
  ActiveRecord::Base.connection_pool.disconnect!

  ActiveSupport.on_load(:active_record) do
    config = Rails.application.config.database_configuration[Rails.env]
    config['adapter'] = 'postgis'
    ActiveRecord::Base.establish_connection(config)
  end
end

必须在创建/销毁第一个/最后一个点列的迁移之前将此初始化程序添加到初始化程序文件夹。否则会弹出错误。

这是经过测试的,并且在正向和反向迁移中都可以使用。 我可以看到这个解决方案在开发模式下的多个安装中变得混乱的地方。 欢迎任何更好的解决方案!

【讨论】:

以上是关于rails3、postgresql 和 postGIS:在迁移中冻结的主要内容,如果未能解决你的问题,请参考以下文章

postgreSQL

通知:中国PostgreSQL认证培训

PostgreSQL on Azure.cn : 安装部署

Postgresql 用户管理

PostgreSQL 错误的所有权

pg安装入门