Я использую полнотекстовые индексы MySQL в приложении Rails 2.3.2. Я добавил индекс через нативный 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"