7

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 でこの問題を解決する方法はありますか? そうでない場合、これに対処する最善の方法は何ですか?

ありがとうございました!

私の移行:

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

スキーマ.rb:

add_index "sms", ["text"], :name => "fulltext_sms"
4

2 に答える 2

1

Railsに簡単に接続できる全文検索エンジンの1つを使用してみませんか?mysqlを使用してすべて自分で行う手間を省きます。多くのカスタマイズを提供する2つの優れたオプションは次のとおりです。

于 2009-04-18T14:55:56.243 に答える