轨道长度复杂的索引

时间:2016-02-05 12:35:59

标签: ruby-on-rails ruby rails-migrations

我写了这样的迁移:

create_table :table1 do |t|
  t.string :foo, null: false, default: '', limit: 512
  t.integer :bar, null: false


  t.index [:foo, :bar]
end

并收到错误

  

Mysql2 ::错误:指定的密钥太长;最大密钥长度为767字节

如何解决此问题,除了解除列foo限制?

1 个答案:

答案 0 :(得分:1)

字符串是varchar(255),你的限制太大,所以你可以使用t.text或将你的限制改为255。

您可以通过传递链接到索引上字段的哈希来修复上一个错误。

t.index [:foo, :bar], :length => {:foo => 25 }