一尘不染

Mysql :: Error:指定的密钥太长;最大密钥长度为767个字节:CREATE INDEX

mysql

我正在使用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')并且不太了解如何解决。


阅读 532

收藏
2020-05-17

共1个答案

一尘不染

听起来好像默认排序规则使用UTF8字符集。

MySQL通过字节而不是字符来限制键的长度。由于MySQL使用的UTF8实现每个字符允许3个字节,因此UTF8列上键的最大长度是键长度(以字符为单位)的3倍(如果未明确指定,则键长度为字段的全长)。

在这种情况下,最大密钥长度256 * 3768。您需要限制键的长度或更改列的排序规则。

2020-05-17