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 № 1Me 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.