Mysql2::Error: Specified key was too long; max key...的解决方法

udasker_pictureudasker 80天前更新 0 浏览 1 关注

Rails 在添加索引时有时候会报以下错误:

...
-- add_index("posts", ["name"], {:name=>"name_index"})
[ERROR] Mysql2::Error: Specified key was too long; max key length is 767 bytes: CREATE  INDEX `name_index`  ON `posts` (`name`)
...

这里的文章有很多解决办法:

MySQL(InnoDB) で "Index column size too large. The maximum column size is 767 bytes." Mysql2::Error: Specified key was too long; max key length is 767 bytes: CREATE UNIQUE INDEX

解决办法

  1. 使用 mysql --help | grep my.cnf 等检查cnf文件的位置
  2. 在my.cnf里添加以下代码后,然后重新启动mysql:
#一般是 /usr/local/etc/my.cnf
innodb_file_format = Barracuda
innodb_file_per_table = 1
innodb_large_prefix

另一种解决办法

t.string :email, limit: 191