Php laravel 5.4迁移工作不正常
我在使用laravel迁移在数据库中创建表时遇到了这个问题。我不知道它可能出了什么问题,因为我在以前的系统上使用了相同的命令。这是我在使用composer创建表时遇到的错误 $php artisan迁移迁移表已成功创建 [Illumb\Database\QueryException]SQLSTATE[42000]:语法错误 或访问冲突:1071指定的密钥太长;最大键 长度为767字节(SQL:ALTERTABLEPhp laravel 5.4迁移工作不正常,php,laravel-5,laravel-5.4,Php,Laravel 5,Laravel 5.4,我在使用laravel迁移在数据库中创建表时遇到了这个问题。我不知道它可能出了什么问题,因为我在以前的系统上使用了相同的命令。这是我在使用composer创建表时遇到的错误 $php artisan迁移迁移表已成功创建 [Illumb\Database\QueryException]SQLSTATE[42000]:语法错误 或访问冲突:1071指定的密钥太长;最大键 长度为767字节(SQL:ALTERTABLEusersaddunique 用户\u电子邮件\u唯一(电子邮件) [PDOExce
users
addunique
用户\u电子邮件\u唯一
(电子邮件
)
[PDOException]SQLSTATE[42000]:语法错误或访问冲突:
1071指定的密钥太长;最大密钥长度为767字节
这是Laravel 5.4中的一个错误 若要修复此问题,请将其置于Schema::create方法调用之上:
Schema::defaultStringLength(191);
请在此处阅读更多信息:
默认情况下,Laravel 5.4使用
utf8mb4
。修复此错误的一种方法是默认返回到utf8
转到config\database.php
并将数据库charset
更改为uft8
,将排序规则更改为utf8\u unicode\u ci
:
'mysql' => [
//..
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
//..
],
字符限制取决于您使用的字符集Laravel
使用的是utf8mb4
,最大索引的字符限制为191
您只需将角色限制设置为正确的。读这封信
索引长度&MySQL/MariaDB
默认情况下,Laravel使用utf8mb4
字符集,其中包括
支持在数据库中存储“emojis”。如果您正在运行
比5.7.7
版本更早的MySQL版本,或比MariaDB
版本更早的
在10.2.2
版本中,您可能需要手动配置默认值
迁移生成的字符串长度,以便MySQL创建
它们的索引。您可以通过调用
AppServiceProvider中的Schema::defaultStringLength
方法:
或者,您可以为您的应用程序启用innodb\u large\u prefix
选项
数据库请参阅数据库文档,以了解有关的说明
如何正确启用此选项
use Illuminate\Support\Facades\Schema;
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
Schema::defaultStringLength(191);
}