2016-11-30 64 views
5

Szyny 5
PostgreSQL 9.4.10
postgis 2.1.8
Szyny + PostGIS: błąd nie może DROP TABLE spatial_ref_sys

gdy próbuję rake db: reset, konsola pokazać błąd

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 

Jestem nowy w psql i postgis, każda pomoc zostanie doceniona.

+0

Być może odwołujesz się do tabeli gdzieś –

+0

Czy masz jakieś relacje 'has_many' skonfigurowane za pomocą modelu SpatialRefSys? – Viro

Odpowiedz

3

Wpadłem na ten sam problem, gdy utworzyłem migrację z enable_extension :postgis. Miało to zamierzony skutek włączenia rozszerzenia, ale również zaktualizowało mój plik db/schema.rb, aby uwzględnić ten tabelę spatial_ref_sys, która jest wymagana przez postgis.

Jednak nie chcemy, aby plik db/schema.rb zawierał tę tabelę, ponieważ wtedy db:drop lub db:reset spróbuje usunąć tabelę, a otrzymamy ten błąd.

Aby powiedzieć szyn ignorować tej tabeli możemy dodać następujące koniec config/environment.rb:

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

Ponadto, nie zapomnij usunąć oświadczenie create_table od db/schema.rb.

0

Ta specjalna tabela zawiera rozszerzenie PostGIS. Został dodany automatycznie. Twój schemat schema.rb prawdopodobnie zawiera wiersz: create_table "spatial_ref_sys", primary_key: "srid", id: :integer, force: :cascade do |t|

Następnie próbujesz odtworzyć bazę danych za pomocą rake db:reset lub może utworzyć testową bazę danych z rake. Ponieważ jest ustawiona opcja force, najpierw upuszcza istniejącą tabelę, ale jest wymagana przez postgis.

Szybkie rozwiązanie jest ignorowanie tej tabeli w pewnym inicjatora:

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

Następnie uruchom rake db:migrate odświeżyć schema.rb i gotowe.

Ale bardziej prawdopodobne jest, że będziesz chciał pracować z niektórymi funkcjami PostGIS przy użyciu gem activerecord-postgis-adapter. Naprawi także plik schema.rb.