Mariadb 10.1版本 导入sql 字符集为utf8 参数innodb_large_prefix=true 报错 Specified key was too long; max key length is 767 bytes
时间: 2023-10-13 08:05:59 浏览: 149
这个错误通常是因为在使用utf8字符集时,创建的索引长度超过了767字节的限制。这是因为InnoDB存储引擎在使用utf8字符集时,一个字符最多占用3个字节,而索引长度的限制是767字节,因此最多只能创建255个字符长度的索引。
解决这个问题有两种方法:
1. 修改字符集为utf8mb4,这样一个字符最多可以占用4个字节,可以创建更长的索引。在创建表时,可以指定字符集为utf8mb4,例如:
```
CREATE TABLE `table_name` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `name_index` (`name`(255))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
```
2. 将innodb_large_prefix参数设置为true,这样可以允许创建更长的索引。在创建表之前,可以在my.cnf文件中添加以下配置:
```
[mysqld]
innodb_large_prefix=true
```
然后重启Mariadb服务器。
注意:修改字符集或者设置innodb_large_prefix参数可能会影响现有的数据,需要谨慎操作。同时,修改字符集时需要确保客户端也使用相同的字符集进行连接。
阅读全文
相关推荐













