我使用laravel migrate命令时遇到问题 . 表明 :
SQLSTATE [42000]:语法错误或访问冲突:1071指定密钥太长;最大密钥长度为1000字节(SQL:alter table users添加唯一users_email_unique(email))
但是我的mysql版本是5.7.14而我的字符集是:
mysql> show variables like "%char%";
+--------------------------+-------------------------------------------------+
| Variable_name | Value |
+--------------------------+-------------------------------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | D:\wamp64\bin\mysql\mysql5.7.14\share\charsets\ |
+--------------------------+-------------------------------------------------+
因此,医生说不应该有任何问题 . 有人可以帮帮我吗?
3 回答
错误消息中提到的
1000 bytes
指向您的存储引擎是MyISAM而不是InnoDB . 与5.7.7中密钥长度相关的MySql更改特定于InnoDB引擎 .您需要将表移动到InnoDB存储引擎,或者如果必须使用MyISAM,则需要使用in the documentation提到的
Schema::defaultStringLength(191);
语句 .对于最新版本的MySQL 5.7.7或更高版本,您不会收到任何错误,但对于任何laravel版本的以下版本,您需要在文件中添加一行
AppServiceProvider.php
放置在app/Providers/AppServiceProvider.php
您需要更新如下:
请不要忘记添加该行
在文件的顶部 .
接近这个工作是通过第二个param与关键名称(一个短的):