2013-10-21 9 views
6

Verwendung Wenn ichPG :: DependentObjectsStillExist: Fehler beim rspec

$rspec "/any_file" 

rspec Lasten in der schema.rb Datei zum Konfigurieren der Datenbank ausführen.

Mein Verständnis ist, dass, wenn es zu dieser Linie kommt

create_table "queue_classic_jobs", force: true do |t|; end 

Rspec einen Befehl

DROP TABLE "queue_classic_jobs" 

läuft.

Es trows dieser Fehler

PG::DependentObjectsStillExist: ERROR: cannot drop table queue_classic_jobs because 
other objects depend on it (ActiveRecord::StatementInvalid) 
DETAIL: function lock_head(character varying) depends on type queue_classic_jobs 
function lock_head(character varying,integer) depends on type queue_classic_jobs 
HINT: Use DROP ... CASCADE to drop the dependent objects too. 
: DROP TABLE "queue_classic_jobs" 

Es sieht für mich wie ich rspec

DROP TABLE "queue_classic_jobs" CASCADE 

Aber wie kann man machen?

+1

Mögliche Lösung: in Schienen Konsole laufen: 'Active :: Base.connection.execute ('DROP TABLE "queue_classic_jobs" CASCADE ")". Dies beseitigt die Objekte, die von der Tabelle abhängen. –

Antwort

10

Führen Sie Rails> = 4.1? Es gibt eine neue Funktion, bei der ActiveRecord versucht, Ihr Testschema mit schema.rb synchron zu halten, ohne die gesamte Datenbank neu zu laden. Sie können darüber lesen: http://guides.rubyonrails.org/4_1_release_notes.html#railties-notable-changes.

Leider funktioniert es nicht mit Fremdschlüsseln: https://github.com/rails/rails/issues/14708. Sie können es durch das Hinzufügen dieser Zeile am Ende der config/Umgebungen/test.rb deaktivieren:

config.active_record.maintain_test_schema = false 
+1

Nein, aber ich werde in ein paar Tagen auf 4.1 aktualisiert. Werde danach +1 für Antworten auf eine alte Frage suchen! –

+0

Perfekt, danke! – recurser

Verwandte Themen