首页 >数据库 >mysql教程 >Laravel 迁移错误:如何修复'指定密钥太长”问题?

Laravel 迁移错误:如何修复'指定密钥太长”问题?

Barbara Streisand
Barbara Streisand原创
2024-12-16 04:16:13878浏览

Laravel Migration Error: How to Fix the

Laravel 迁移错误:解决“指定密钥太长”问题

尝试使用 Laravel 5.4 的 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 table users add unique users_email_unique(email))

原因:

当索引键的长度超过数据库引擎允许的最大长度时,会发生错误。默认情况下,MySQL 及其变体的最大索引键长度为 767 字节。

解决方案:

方法一:更新应用服务提供商

按照 Laravel 官方文档中的建议,将以下代码添加到您的app/Providers/AppServiceProvider.php 文件:

use Illuminate\Support\Facades\Schema;

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

这会将所有迁移的默认字符串长度增加到 191 个字符,这在允许的限制内。

方法 2:启用 InnoDB Large 前缀

或者,用户可以启用 innodb_large_prefix他们的 MySQL 数据库的选项。有关如何正确启用此选项的说明,请参阅数据库的文档。该解决方案允许更长的索引键,使其更适合更大的数据集。

以上是Laravel 迁移错误:如何修复'指定密钥太长”问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn