Ole*_*ann 7 mysql sql ruby-on-rails mysql-error-1170
我在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`)
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有猴子修补Rails的情况下在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
Run Code Online (Sandbox Code Playgroud)
schema.rb:
add_index "sms", ["text"], :name => "fulltext_sms"
Run Code Online (Sandbox Code Playgroud)
我想你需要在你的environment.rb中设置它:
config.active_record.schema_format = :sql
Run Code Online (Sandbox Code Playgroud)
这里的参考:https://rails.lighthouseapp.com/projects/8994/tickets/74-problem-with-tests-and-custom-mysql-fulltext-indexes
使用可以轻松插入 Rails 的全文搜索引擎之一怎么样?省去了您自己使用 mysql 完成所有操作的麻烦。提供大量自定义功能的两个不错的选择是: