Laravel 迁移错误:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节

2021-11-20 00:00:00 mysql laravel pdo laravel-5 laravel-5.4

使用 php artisan make:auth

在 Laravel 5.4 上的迁移错误<块引用>

[Illuminate\Database\QueryException] SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节(SQL:alter table users add unique users_email_unique(email))

[PDOException] SQLSTATE[42000]: 语法错误或访问冲突:1071 指定的键太长;最大密钥长度为 767 字节

解决方案

根据 官方 Laravel 7.x 文档,你可以很容易地解决这个问题.

更新您的 /app/Providers/AppServiceProvider.php 以包含:

使用 Illuminate\Support\Facades\Schema;/*** 引导任何应用程序服务.** @return 无效*/公共函数引导(){架构::默认字符串长度(191);}

<块引用>

或者,您可以为您的数据库启用 innodb_large_prefix 选项.有关如何正确启用此选项的说明,请参阅您的数据库文档.

Migration error on Laravel 5.4 with php artisan make:auth

[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter tabl e users add unique users_email_unique(email))

[PDOException] SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

解决方案

According to the official Laravel 7.x documentation, you can solve this quite easily.

Update your /app/Providers/AppServiceProvider.php to contain:

use Illuminate\Support\Facades\Schema;

/**
 * Bootstrap any application services.
 *
 * @return void
 */
public function boot()
{
    Schema::defaultStringLength(191);
}

Alternatively, you may enable the innodb_large_prefix option for your database. Refer to your database's documentation for instructions on how to properly enable this option.

相关文章