2

I wrote migration like this:

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


  t.index [:foo, :bar]
end

and got an error

Mysql2::Error: Specified key was too long; max key length is 767 bytes

How I can resolve this problem, except deсrease column foo limit?

Ilya
  • 13,337
  • 5
  • 37
  • 53

1 Answers1

1

String is varchar(255) your limit is too large so you can use t.text or change your limit to 255.

The previous error you can fix by passing a hash linked to the field on the index.

t.index [:foo, :bar], :length => {:foo => 25 }
osman
  • 2,335
  • 18
  • 25