【发布时间】:2009-04-17 07:57:40
【问题描述】:
我在 Rails 2.3.2 应用程序中使用 MySQL 全文索引。我在迁移中通过本机 SQL 添加了索引。但是有一个已知问题会导致 schema.rb 出现问题。 Rails 不理解全文索引并尝试创建普通索引。这会在从 schema.rb 创建数据库时出错(例如测试、规范等):
Mysql::Error: BLOB/TEXT column 'text' used in key specification without a key length: CREATE INDEX `fulltext_sms` ON `sms` (`text`)
有没有办法在 Rails 2.3.2 中解决这个问题而无需猴子修补 Rails?如果没有,最好的方法是什么?
谢谢!
我的迁移:
class FulltextIndexCustomersSmsMessage < ActiveRecord::Migration
def self.up
execute('ALTER TABLE sms ENGINE = MyISAM')
execute('ALTER TABLE customers ENGINE = MyISAM')
execute('CREATE FULLTEXT INDEX fulltext_sms ON sms (text(500))')
execute('CREATE FULLTEXT INDEX fulltext_customer ON customers (fullname(255))')
end
def self.down
execute('ALTER TABLE sms ENGINE = innodb')
execute('ALTER TABLE customers ENGINE = innodb')
execute('DROP INDEX fulltext_sms ON sms')
execute('DROP INDEX fulltext_customer ON customers')
end
end
schema.rb:
add_index "sms", ["text"], :name => "fulltext_sms"
【问题讨论】:
标签: mysql sql ruby-on-rails mysql-error-1170