2009-04-17 20 views
7

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" 

Trả lời

1

Làm thế nào về việc sử dụng một trong những công cụ tìm kiếm toàn văn có thể dễ dàng cắm vào Rails? Tiết kiệm cho bạn những rắc rối của việc làm tất cả cho mình với mysql. Hai tùy chọn tốt, cung cấp nhiều tùy chỉnh, là:

+0

Ý 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? –

+0

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ỏ. –

5

Tôi nghĩ rằng bạn cần phải thiết lập này trong environment.rb của bạn:

config.active_record.schema_format = :sql 

Đây là tài liệu tham khảo: https://rails.lighthouseapp.com/projects/8994/tickets/74-problem-with-tests-and-custom-mysql-fulltext-indexes

+0

Điều này không giải quyết được vấn đề đối với tôi ... Tôi có dòng đó trong môi trường.rb và đang cố tạo một chỉ mục trong quá trình di chuyển. Nó cho lỗi tương tự như OP. –

Các vấn đề liên quan