我正在使用Rails 2.3.5应用程序,在女巫中我有这个领域
t.string "trip_cities", :limit => 256
而这个指数
add_index "bookings", ["trip_cities"], :name => "trip_cities"
当我尝试执行时:
bundle exec rake db:test:load
我收到此错误,Mysql::Error: Specified key was too long; max key length is 767 bytes: CREATE INDEX 'trip_cities' ON 'bookings' ('trip_cities')并且不太了解如何解决。
Mysql::Error: Specified key was too long; max key length is 767 bytes: CREATE INDEX 'trip_cities' ON 'bookings' ('trip_cities')
听起来好像默认排序规则使用UTF8字符集。
MySQL通过字节而不是字符来限制键的长度。由于MySQL使用的UTF8实现每个字符允许3个字节,因此UTF8列上键的最大长度是键长度(以字符为单位)的3倍(如果未明确指定,则键长度为字段的全长)。
在这种情况下,最大密钥长度256 * 3为768。您需要限制键的长度或更改列的排序规则。
256 * 3
768