Wie gehe ich mit zu langen Indexnamen in einer Ruby on Rails ActiveRecord-Migration um?
Ich versuche, fügen Sie einen eindeutigen index, der angelegt wird, aus der der Fremdschlüssel der vier zugehörigen Tabellen:
add_index :studies,
["user_id", "university_id", "subject_name_id", "subject_type_id"],
:unique => true
Der Datenbank-Einschränkung für den index-name führt zu einem scheitern der migration. Hier ist die Fehlermeldung:
Index name 'index_studies_on_user_id_and_university_id_and_subject_name_id_and_subject_type_id' auf Tabelle 'Studien' ist zu lang; die Grenze ist 64 Zeichen
Wie kann ich das umgehen? Kann ich angeben, einen anderen index name?
InformationsquelleAutor der Frage JJD | 2011-03-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bieten die
:name
optionadd_index
z.B.:Wenn Sie mit der
:index
option aufReferenzen
in einemcreate_table
block nimmt die gleichen Optionen hash alsadd_index
als Wert.InformationsquelleAutor der Antwort fl00r
Können Sie auch den index ändern name in Spalte Definitionen innerhalb eines
create_table
block (wie Sie von der migration-generator).InformationsquelleAutor der Antwort Craig Walker
In PostgreSQL, die Standard Grenzwert ist 63 Zeichen. Weil index-Namen müssen eindeutig sein, es ist schön zu haben, ein wenig Konvention. Ich benutze (ich habe gezwickt Beispiel zu erklären komplexere Konstruktionen):
Den normalen index gewesen wäre:
Die Logik wäre:
index
wirdidx
_id
Die in der Regel nicht den job zu.
InformationsquelleAutor der Antwort ecoologic
Können Sie auch tun,
als in der Ruby on Rails-API.
InformationsquelleAutor der Antwort tomascharad
Ähnlich zu der vorherigen Antwort: verwenden Sie Einfach das "name" - Schlüssel mit Ihrem regelmäßigen add_index Linie:
InformationsquelleAutor der Antwort Nadeem Yasin