Den*_*eng 1 laravel laravel-5.4
我在使用 laravel migrate 命令时遇到问题。表明 :
SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 1000 字节(SQL:alter table
usersadd uniqueusers_email_unique(
但是我的 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\ |
+--------------------------+-------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
所以不应该像医生所说的那样有任何问题。有人可以帮助我吗?
对于最新版本的 MySQL 5.7.7 或更高版本,您不会收到任何错误,但是对于任何 Laravel 版本中的以下版本,您需要在AppServiceProvider.php放置在的文件中添加一行app/Providers/AppServiceProvider.php
您需要更新以下内容:
public function boot()
{
Schema::defaultStringLength(191);
}
Run Code Online (Sandbox Code Playgroud)
请不要忘记添加行
use Illuminate\Support\Facades\Schema;
Run Code Online (Sandbox Code Playgroud)
在文件的顶部。
参考以下博客:https : //laravel-news.com/laravel-5-4-key-too-long-error
该1000 bytes错误消息指向存储引擎存在的MyISAM而不是InnoDB的提及。5.7.7 中与密钥长度相关的 MySql 更改特定于 InnoDB 引擎。
您需要将表移动到 InnoDB 存储引擎,或者如果必须使用 MyISAM,则需要使用文档中Schema::defaultStringLength(191);提到的语句。
// AppServiceProvider
use Illuminate\Support\Facades\Schema;
public function boot()
{
Schema::defaultStringLength(191);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4370 次 |
| 最近记录: |