Rails BLOB/TEXT列在密钥规范中使用,没有密钥长度

Mor*_*n H 5 mysql ruby-on-rails rails-migrations

我正在尝试运行rails迁移,我看到错误"密钥规范中使用的BLOB/TEXT列没有密钥长度"......但是,我在迁移类中指定了长度.从迁移生成SQL语句时,Rails似乎忽略了这一点.有线索吗?

这是我的迁移类:

class AddIndexToAccounts < ActiveRecord::Migration
def self.up
  add_index :TACCOUNT, :NAMEX, :length => 5
end
def self.down
  remove_index :TACCOUNT, :NAMEX
end
end
Run Code Online (Sandbox Code Playgroud)

这是错误输出.它似乎已经看到了长度规范,但它在它生成的SQL语句中不存在:

** [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`)
Run Code Online (Sandbox Code Playgroud)

tad*_*man 10

您可以尝试更具体地查看是否可以将其用于工作:

add_index :TACCOUNT, :NAMEX, :length => { :NAMEX => 5 }
Run Code Online (Sandbox Code Playgroud)

作为最后的手段,您可以通过调整错误的ADD INDEX语句并使用正确的语句直接使用SQL来创建索引"硬路径" execute.