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