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

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

Linda Hamilton
发布: 2024-11-30 00:29:09
原创
844 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板