1071 - Specified key was too long; max key length is 1000 bytes
时间: 2023-11-14 10:08:34 浏览: 161
这个错误通常是由于 MySQL 版本过低导致的,因为在 MySQL 5.7.7 版本之后,InnoDB 引擎默认使用了 utf8mb4 字符集,而 utf8mb4 字符集下一个字符最多占用 4 个字节,因此索引长度超过了 1000 字节的限制。解决方法是将表的字符集改为 utf8 或者将 MySQL 升级到 5.7.7 及以上版本。
相关问题
1071 -Specified key was too long; max key length is 1000 bytes
`1071 - Specified key was too long; max key length is 1000 bytes` 这是一个常见的 MySQL 错误提示,表示你在创建索引时指定的关键字长度超出了数据库支持的最大限制。
### 原因分析
这个错误通常发生在以下几种情况:
1. **字段字符集占用空间过大**:例如使用 `utf8mb4` 字符集时,每个字符最多需要 4 个字节存储。如果设置了较大的字符串作为索引列(如超过 255 字符),就可能导致总长度超出最大值。
2. **联合索引的字段过多或过长**:当多个字段组合成复合索引时,所有字段的长度加起来可能会超出允许范围。
3. **MySQL 配置限制**:InnoDB 引擎对单个索引条目的大小有限制,默认为 767 字节(对于某些版本可能是 1000 或者其他自定义配置)。
---
### 解决方案
#### 方案一:调整字段类型或减少索引长度
如果你正在尝试给一个较长的字符串字段添加索引,可以考虑仅为其前缀部分建立索引。例如:
```sql
ALTER TABLE your_table ADD INDEX (your_column(255));
```
这里的 `(255)` 表示只针对该字段的前 255 个字符创建索引。
#### 方案二:更改表默认字符集
从 `utf8mb4` 改为更小开销的编码格式比如 `utf8` 可能会有所帮助,因为后者只需要三个字节就能保存大部分常用字符:
```sql
ALTER TABLE your_table CONVERT TO CHARACTER SET utf8;
```
不过需要注意的是这样做可能丢失表情符号等特殊Unicode的支持能力。
#### 方案三:升级MySQL版本并启用大页设置
较新的 MySQL 版本支持更大的行尺寸和键大小,通过修改 InnoDB 参数也可以扩大索引用的空间限额。例如,在 my.cnf 文件里加入下面这句命令然后重启服务即可生效:
```ini
[mysqld]
innodb_large_prefix=ON
```
同时还需要保证使用的引擎及文件格式兼容此特性(推荐将 ROW_FORMAT 设置为 DYNAMIC 或 COMPRESSED)
---
[Err] 1071 - Specified key was too long; max key length is 1000 bytes
1071 - Specified key was too long; max key length is 1000 bytes 是一个错误信息,表示指定的键太长,最大键长度为1000个字节。这个错误通常发生在数据库中创建唯一键时,当键的长度超过了数据库所允许的最大长度时会出现该错误。引用提到了这个错误信息,并且指出是在尝试为`users`表添加一个唯一键(`users_username_unique`)时出现的。MySQL 5.7版本中,varchar的长度是根据字符数来计算的,一个字母或汉字都算作一个字符。因此,当键的长度超过1000个字节时,就会出现这个错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [[Err] 1071 - Specified key was too long; max key length is 767 bytes](https://blog.csdn.net/woshiwozzl/article/details/107491729)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [创建索引时,解决1071 Specified key was too long; max key length is 1000 bytes错误信息](https://blog.csdn.net/alpeace/article/details/116353774)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文
相关推荐
















