2009-04-17 7 views
7

J'utilise des index MySQL fulltext dans une application Rails 2.3.2. J'ai ajouté l'index via SQL natif dans ma migration. Mais il existe un problème connu causant des problèmes avec le schéma.rb. Rails ne comprend pas les index de texte intégral et essaie de créer un index normal. Cela entraînera une erreur lors de la création de la base de données schema.rb (par exemple les tests, spécifications, etc.):Index MySQL Fulltext avec Rails 2.3.2 (problème de migration)

Mysql::Error: BLOB/TEXT column 'text' used in key specification without a key length: CREATE INDEX `fulltext_sms` ON `sms` (`text`) 

est-il un moyen de résoudre ce problème dans Rails 2.3.2 sans Rails __gVirt_NP_NN_NNPS<__ singe-patcher? Et si non, quelle est la meilleure façon d'aborder cela?

Merci!

Ma migration:

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" 

Répondre

1

Comment l'utilisation de l'un des moteurs de recherche en texte intégral qui peut être facilement branché dans Rails? Vous évite de devoir tout faire vous-même avec mysql. Deux bonnes options, qui fournissent beaucoup de personnalisation, sont:

+0

Bonne idée, mais si je veux faire face à moi-même, ce pourrais-je faire? –

+0

avec sphinx (ce qui * est * un très bon choix quand il est utilisé avec TS) vous devez également faire en sorte que le démon fonctionne avec un travail cron et reconstruire les index. Je vais essayer d'utiliser l'approche native de MySQL sur un petit projet. –

Questions connexes