2016-05-11 13 views
2
OS: Ubuntu 14.04 
Rails: 3.2.18 
Ruby: 2.15 

Ich habe eine Rails-Anwendung geerbt, und ich habe einige Probleme mit der Migration.Was könnte dazu führen, dass die Rails-Migration fehlschlägt

Wenn ich versuche, die neueste Migration zu laufen, erhalte ich die folgende Fehlermeldung:

== CreateBillingComments: migrating ========================================== 
-- create_table(:billing_comments, {:id=>false}) 
rake aborted! 
StandardError: An error has occurred, all later migrations canceled: 

Mysql2::Error: Table 'billing_comments' already exists: 
CREATE TABLE `billing_comments` 

Die Tabelle billing_comments existiert, aber das Problem ist, dass ich nicht die Zeichenfolge billing_comments überall in jedem der Quelle finden Codedateien (einschließlich Migrationsdateien, Ansichten, Controller, Modelle usw.).

Die Tabelle wird nicht verwendet, daher möchte ich sie und alle Verweise darauf im Code löschen. Meine Sorge ist, dass, wenn ich einfach die Tabelle lösche, ich das Problem nur teilweise gelöst habe.

Ich suchte auch nach CreateBillingComments, vergeblich.

Lauf rake db: schema: dump ein neues schema.rb hergestellt, mit den folgenden darin:

create_table "billing_comments", :force => true do |t| 
    t.string "ticket_id" 
    t.text  "content" 
    t.string "user_id" 
    t.string "slug" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
end 

Aber das ist der einzige Ort, wo jetzt billing_comments erscheint.

Woher könnte diese Information kommen?

Antwort

2

Zu irgendeinem Zeitpunkt im Verlauf Ihrer Datenbank wurde die Tabelle billing_comments durch eine Rails-Migration oder auf andere Weise erstellt. Sie können einfach eine Wache Migration hinzufügen Neuerstellung der Tabelle zu verhindern, wenn es bereits vorhanden ist:

unless table_exists? :billing_comments 
    create_table(:billing_comments, {:id=>false}) 
end 

Beachten Sie, dass Sie immer noch die id Spalte entfernen müssen, wenn es in Ihrem billing_comments Tabelle bereits vorhanden ist.

+0

Die Migrationsdatei für diese Tabelle existiert nicht. Ich habe es bereits in der Quelle gesucht und kann es nicht finden – EastsideDeveloper

+0

Ok, sollte nicht egal sein, ist es möglich, dass eine Migration einmal existierte und gelöscht wurde oder nicht an die Quelle gebunden. So oder so kam der Tisch irgendwie hin. Sie können die Neuerstellung der Tabelle überspringen, indem Sie eine Wache verwenden, außer table_exists? : billing_comments' wie in meiner Antwort oben. –

+0

Wie viele Migrationen haben Sie? Ist 'billing_comments' zumindest in deinem' schema.rb'? –

Verwandte Themen