Tôi đang sử dụng chỉ mục toàn văn MySQL trong Ứng dụng Rails 2.3.2. Tôi đã thêm chỉ mục thông qua SQL gốc trong quá trình di chuyển của mình. Nhưng có một vấn đề đã biết gây ra các vấn đề với schema.rb. Đường ray không hiểu chỉ mục toàn văn và cố gắng tạo chỉ mục bình thường. Điều này sẽ gây ra một lỗi khi tạo cơ sở dữ liệu từ schema.rb (ví dụ thử nghiệm, thông số kỹ thuật, vv):Chỉ mục MySQL Fulltext với Rails 2.3.2 (sự cố di chuyển)
Mysql::Error: BLOB/TEXT column 'text' used in key specification without a key length: CREATE INDEX `fulltext_sms` ON `sms` (`text`)
Có cách nào để giải quyết vấn đề này trong Rails 2.3.2 mà không Rails khỉ vá? Và nếu không, cách tốt nhất để giải quyết vấn đề này là gì?
Cảm ơn bạn!
di cư của tôi:
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"
Ý tưởng tốt, nhưng trong trường hợp tôi muốn để đối phó với điều này bản thân mình, những gì tôi có thể làm được không? –
với sphinx (mà * là * một lựa chọn rất tốt khi được sử dụng với TS), bạn cũng phải đối phó với việc giữ daemon chạy với một công việc cron và xây dựng lại các chỉ mục. Tôi sẽ cố gắng sử dụng cách tiếp cận MySQL gốc trên một dự án nhỏ. –