报错
Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users
add unique users_email_unique
(email
))
原因
As you can see in the error message - "The maximum column size is 767 bytes", if you want to create an index on it. A VARCHAR(255) column can take up to 765 (2553) bytes using utf8 and 1020 (2554) bytes using utf8mb4. This is because in MySQL utf8 takes up to 3 bytes and utf8mb4 up to 4 bytes (the real UTF8). Thus creating a VARCHAR(255) (unique) index with utf8mb4 will fail.
解决办法
以下三种方式都是可以的:
- MySQL 5.7 avoids the problem. Consider upgrading.
- VARCHAR(255) is usually var bigger than necessary. If you can safely shrink to 191 or less, the error will go away.
- Switch to utf8 (from utf8mb4), if you don't need Chinese or Emoji.