Ich versuche, eine Schienen Migration auszuführen, und ich sehe den Fehler "BLOB/TEXT-Spalte in der Schlüsselspezifikation ohne eine Schlüssellänge verwendet" ... Allerdings, ich geben Sie die Länge in der Migrationsklasse an. Rails scheint dies zu ignorieren, wenn die SQL-Anweisung aus der Migration generiert wird. Irgendwelche Hinweise?Rails BLOB/TEXT-Spalte in der Schlüsselspezifikation ohne eine Schlüssellänge verwendet
Hier ist meine Migration Klasse:
class AddIndexToAccounts < ActiveRecord::Migration
def self.up
add_index :TACCOUNT, :NAMEX, :length => 5
end
def self.down
remove_index :TACCOUNT, :NAMEX
end
end
Und hier ist der Fehler ausgegeben. Es scheint, die Längenangabe gesehen zu haben, aber es ist nicht in der SQL-Anweisung, dass es erzeugt:
** [out :: 192.168.10.7] -- add_index(:TACCOUNT, :NAMEX, {:length=>5})
** [out :: 192.168.10.7] rake aborted!
** [out :: 192.168.10.7] An error has occurred, all later migrations canceled:
** [out :: 192.168.10.7]
** [out :: 192.168.10.7] Mysql::Error: BLOB/TEXT column 'NAMEX' used in key specification without a key length: CREATE INDEX `index_TACCOUNT_on_NAMEX` ON `TACCOUNT` (`NAMEX`)
Die Indizierung von 'TEXT'-Spalten ist normalerweise eine schlechte Idee. Warum ist diese Spalte dieses Typs an erster Stelle, wenn Sie sie indizieren müssen? – tadman
Ich stimme dir zu, deshalb versuche ich nur die ersten paar Zeichen zu indizieren. Ich arbeite gerade mit der Datenbankstruktur, die ich gegeben wurde –