Estoy usando índices de texto completo de MySQL en una aplicación de Rails 2.3.2. Agregué el índice a través de SQL nativo en mi migración. Pero hay un problema conocido que causa problemas con schema.rb. Rails no entiende los índices de texto completo e intenta crear un índice normal. Esto provocará un error al crear la base de datos de schema.rb (por ejemplo, pruebas, especificaciones, etc.):Índice de texto completo de MySQL con Rails 2.3.2 (problema de migración)
Mysql::Error: BLOB/TEXT column 'text' used in key specification without a key length: CREATE INDEX `fulltext_sms` ON `sms` (`text`)
¿Hay una manera de resolver este problema en Rails 2.3.2 sin barras de mono-parches? Y si no, ¿cuál es la mejor manera de lidiar con esto?
¡Gracias!
Mi migración:
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"
buena idea, pero en caso de que quieren hacer frente a esto por mí mismo, lo podría hacer? –
con sphinx (que * es * una muy buena opción cuando se utiliza con TS) también tiene que tratar de mantener el daemon en ejecución con un trabajo cron y reconstruir los índices. Voy a intentar usar el enfoque nativo de MySQL en un proyecto pequeño. –