首页 >数据库 >mysql教程 >如何解决 Laravel 迁移错误:超过唯一密钥长度限制?

如何解决 Laravel 迁移错误:超过唯一密钥长度限制?

Linda Hamilton
Linda Hamilton原创
2024-11-30 00:29:09838浏览

How to Solve Laravel Migration Error: Unique Key Length Limit Exceeded?

Laravel 迁移错误:超过唯一键长度限制

在 Laravel 中,创建迁移以将唯一键添加到具有字符串过长,您可能会遇到以下错误:

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

此错误可能通常可以通过指定较小的列长度来解决。字符串的默认长度为 250 个字符,这对于大多数电子邮件地址和其他典型字符串来说应该足够了。

在您的特定迁移中,您已将电子邮件列定义为长度为 320 的字符串。尝试将此长度减少到 250 或默认值:

Schema::create('users', function (Blueprint $table) {
    $table->string('email', 250); // or $table->string('email');

如果在调整列长度后仍然遇到错误,您可以尝试为您的列设置默认字符串长度 数据库。在 Laravel 5.4 及更高版本中,您可以通过将以下内容添加到 AppServiceProvider.php 文件中来实现此目的:

use Illuminate\Database\Schema\Builder;

public function boot()
{
    Builder::defaultStringLength(191);
}

这会将迁移中创建的所有新列的默认字符串长度设置为 191 个字符。

以上是如何解决 Laravel 迁移错误:超过唯一密钥长度限制?的详细内容。更多信息请关注PHP中文网其他相关文章!

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