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中文网其他相关文章!