Schienen 5
Postgresql 9.4.10
Postgis 2.1.8
Wenn ich Rake db: reset versuche, wird in der Konsole ein Fehler angezeigt
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
Ich bin neu bei Psql und Postgis, jede Hilfe wird geschätzt.
Antworten:
4 für die Antwort № 1Ich bin auf dieses Problem gestoßen, als ich eine Migration mit erstellte enable_extension :postgis
. Dies hatte den beabsichtigten Effekt, die Erweiterung zu aktivieren, aber es hat auch meine aktualisiert db/schema.rb
Datei, um dies aufzunehmen spatial_ref_sys
Tabelle, die von postgis benötigt wird.
Das wollen wir aber nicht db/schema.rb
Datei, um diese Tabelle aufzunehmen, da dann eine db:drop
oder db:reset
wird versuchen, die Tabelle zu entfernen, und wir erhalten diesen Fehler.
Damit die Schienen diese Tabelle ignorieren können, können Sie am Ende von Folgendes hinzufügen config/environment.rb
:
ActiveRecord::SchemaDumper.ignore_tables = ["spatial_ref_sys"]
Vergessen Sie nicht, das zu entfernen create_table
Aussage von db/schema.rb
.
0 für die Antwort № 2
Diese spezielle Tabelle wird mit der Erweiterung PostGIS geliefert. Es wurde automatisch hinzugefügt. Ihre schema.rb enthält wahrscheinlich folgende Zeile: create_table "spatial_ref_sys", primary_key: "srid", id: :integer, force: :cascade do |t|
Dann versuchen Sie, Ihre Datenbank mit neu zu erstellen rake db:reset
oder erstellen Sie vielleicht eine Testdatenbank mit rake
. weil force
Die Option ist so eingestellt, dass die vorhandene Tabelle zuerst gelöscht wird. Sie wird jedoch von postgis benötigt.
Die schnelle Lösung besteht darin, diese Tabelle in einem Initialisierungsprogramm zu ignorieren:
::ActiveRecord::SchemaDumper.ignore_tables |= %w(spatial_ref_sys)
Dann renne rake db:migrate
um dein schema.rb zu aktualisieren und es ist fertig.
Es ist jedoch wahrscheinlicher, dass Sie mit einigen PostGIS-Funktionen mit gem arbeiten möchten aktiverecord-postgis-adapter. Es wird auch schema.rb für Sie reparieren.