4 Stimmen

Temporärer Indexname bei Rails-Migration zu lang

Ich habe ein Problem beim Versuch, eine meiner Migrationen rückgängig zu machen. Es scheint, als ob Rails eine temporäre Tabelle für die Migration, mit temporären Indizes generiert. Mein tatsächlicher Index auf dieser Tabelle ist weniger als 64 Zeichen, aber immer wenn Rails versucht, einen temporären Index für sie zu erstellen, wird es in einen Namen länger als 64 Zeichen, und wirft einen Fehler.

Hier ist meine einfache Migration:

class AddColumnNameToPrices < ActiveRecord::Migration
  def self.up
     add_column :prices, :column_name, :decimal
  end

  def self.down
    remove_column :prices, :column_name
  end
end

Hier ist die Fehlermeldung, die ich erhalte:

==  AddColumnNameToPrices: reverting ============================================
-- remove_column(:prices, :column_name)
rake aborted!
An error has occurred, this and all later migrations canceled:

Index name 'temp_index_altered_prices_on_column_and_other_column_and_third_column' on table     'altered_prices' is too long; the limit is 64 characters

Ich habe die Spaltennamen geändert, aber das Beispiel ist immer noch da. Ich kann meine Änderung einfach in einer zweiten Migration vornehmen, aber das bedeutet immer noch, dass ich Migrationen in dieser Tabelle nicht rückgängig machen kann. Ich kann den Index in einer neuen Migration umbenennen, aber das schließt mich immer noch von dieser einen Migration aus.

Hat jemand eine Idee, wie man dieses Problem umgehen kann?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X