如何修复 Laravel 迁移中的唯一密钥长度错误?

Barbara Streisand
发布: 2024-10-31 02:32:02
原创
867 人浏览过

How to Fix Unique Key Length Errors in Laravel Migrations?

Laravel 迁移中的唯一键长度问题

在 Laravel 中,为表列创建唯一键时,可能会遇到错误,指出指定的密钥太长。当为唯一键定义的列的长度超过允许的最大长度时,就会出现此问题。

问题排查

提供的迁移指定了唯一约束长度为 320 个字符的“电子邮件”列。但是,默认情况下,Laravel 中的 'email' 列被定义为默认长度为 255 的字符串。此默认长度对于大多数电子邮件地址来说应该足够了。

要解决此问题,请考虑减少长度迁移中“email”列的长度为合理的值,例如 250 个字符:

$table->string('email', 250);
登录后复制

或者,您可以显式指定唯一键的长度作为 'unique() 的第二个参数' 方法:

$table->unique('email', 'users_email_uniq', 320);
登录后复制

Laravel 5.4 及更高版本

对于 Laravel 5.4 及更高版本,可以使用更全面的解决方案。在“AppServiceProvider.php”文件中,将以下代码添加到“boot()”方法中:

use Illuminate\Database\Schema\Builder;

public function boot()
{
    Builder::defaultStringLength(191);
}
登录后复制

将默认字符串长度设置为 191 可确保使用“string()”方法创建的列最大长度为 191 个字符,消除了遇到唯一密钥长度问题的可能性。

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

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