【发布时间】:2012-04-10 15:58:20
【问题描述】:
我正在尝试运行 rails 迁移,我看到错误“BLOB/TEXT column used in key specification without a key length”...但是,我在迁移类中指定了长度。从迁移生成 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
这是错误输出。它似乎已经看到了长度规范,但它没有出现在它生成的 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`)
【问题讨论】:
-
索引
TEXT列通常是个坏主意。如果您需要为该类型的列编制索引,为什么首先要对它进行索引? -
我同意你的观点,这就是为什么我只尝试索引前几个字符。我只是在使用给定的数据库结构
标签: mysql ruby-on-rails rails-migrations