Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 错误:1071,指定的密钥太长;最大密钥长度为1000字节_Php_Mysql_Laravel_Innodb - Fatal编程技术网

Php 错误:1071,指定的密钥太长;最大密钥长度为1000字节

Php 错误:1071,指定的密钥太长;最大密钥长度为1000字节,php,mysql,laravel,innodb,Php,Mysql,Laravel,Innodb,我想在我的数据库中导入一个sql文件,出现此错误1071,指定的密钥太长;最大密钥长度为1000字节 这是我的相关表代码 DROP TABLE IF EXISTS `model_has_permissions`; CREATE TABLE `model_has_permissions` ( `permission_id` int(10) unsigned NOT NULL, `model_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT

我想在我的数据库中导入一个sql文件,出现此错误
1071,指定的密钥太长;最大密钥长度为1000字节

这是我的相关表代码

DROP TABLE IF EXISTS `model_has_permissions`;

CREATE TABLE `model_has_permissions` (
  `permission_id` int(10) unsigned NOT NULL,
  `model_type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `model_id` bigint(20) unsigned NOT NULL,
  PRIMARY KEY (`permission_id`,`model_id`,`model_type`),
  KEY `model_has_permissions_model_id_model_type_index` (`model_id`,`model_type`),
  CONSTRAINT `model_has_permissions_permission_id_foreign` FOREIGN KEY (`permission_id`) REFERENCES `permissions` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

方案A:在
model\u type
中,字符数不要超过191

方案B:规范化
车型类型

方案C:如果合适,将
model_type
更改为`字符集ascii


其他选项:

此问题在这里有答案
utf8mb4
最多使用四个字节来存储字符,因此
varchar(255)
已将您存储到1020。我正在重新打开此问题,因为“dup”答案不适用。在
主键
上使用前缀索引将导致更多问题。