/ / Rails + Postgis: el error no puede caer la tabla spatial_ref_sys - ruby-on-rails, postgresql, postgis

Rails + Postgis: el error no puede caer la tabla spatial_ref_sys - ruby-on-rails, postgresql, postgis

Carriles 5
Postgresql 9.4.10
Postgis 2.1.8

cuando intento rake db: reset, la consola muestra un error

rake aborted! ActiveRecord::StatementInvalid:
PG::DependentObjectsStillExist: ERROR:  cannot drop table
spatial_ref_sys because extension postgis requires it HINT:  You can
drop extension postgis instead. : DROP TABLE "spatial_ref_sys" CASCADE

Soy nuevo en psql y postgis, cualquier ayuda será apreciada.

Respuestas

4 para la respuesta № 1

Me encontré con este mismo problema cuando creé una migración con enable_extension :postgis. Esto tuvo el efecto deseado de habilitar la extensión, pero también actualizó mi db/schema.rb archivo para incluir este spatial_ref_sys Tabla, que es requerida por postgis.

Sin embargo, no queremos el db/schema.rb archivo para incluir esta tabla, porque entonces un db:drop o db:reset intentaremos eliminar la tabla y obtendremos este error.

Para indicar a los rieles que ignoren esta tabla, podemos agregar lo siguiente al final de config/environment.rb:

ActiveRecord::SchemaDumper.ignore_tables = ["spatial_ref_sys"]

Además, no te olvides de quitar el create_table declaración de db/schema.rb.


0 para la respuesta № 2

Esta mesa especial viene con la extensión PostGIS. Fue agregado automáticamente. Su schema.rb probablemente contiene línea: create_table "spatial_ref_sys", primary_key: "srid", id: :integer, force: :cascade do |t|

A continuación, intenta recrear su base de datos con rake db:reset o tal vez crear una base de datos de prueba con rake. Porque force La opción está configurada. Primero descarte la tabla existente, pero Postgis la requiere.

La solución rápida es ignorar esta tabla en algunos inicializadores:

::ActiveRecord::SchemaDumper.ignore_tables |= %w(spatial_ref_sys)

Entonces corre rake db:migrate para actualizar su schema.rb y se hace.

Pero lo más probable es que desee trabajar con algunas características de PostGIS usando gema activerecord-postgis-adapter. También arreglará schema.rb para usted.