Laravel 迁移错误:唯一密钥长度超出限制
当尝试使用迁移来迁移 Laravel 中的用户表时,开发人员可能会遇到错误:“[SQLSTATE[42000]:语法错误或访问冲突:1071 指定的键是太长;最大密钥长度为 767 字节。”当指定的唯一键长于最大允许长度时,通常会出现此错误。
问题陈述
提供的迁移尝试使用唯一键创建用户表在电子邮件栏上。但是,email 列的长度被指定为 320 个字符,超出了最大长度限制。
解决方案
1。减少电子邮件列长度
将电子邮件列的长度减少到较小的值,例如 250 或默认的 191 个字符。按如下方式调整迁移:
Schema::create('users', function(Blueprint $table) { // ... $table->string('email', 250); // Update the email column length // ... });
2.设置默认字符串长度 (Laravel 5.4 )
如果您使用 Laravel 5.4 或更高版本,您可以在 AppServiceProvider.php 文件的 boot 方法中设置默认字符串长度:
public function boot() { Builder::defaultStringLength(191); }
这将为迁移中创建的所有字符串列设置默认长度 191 个字符,确保唯一键不超过允许的长度长度。
以上是Laravel 迁移错误:如何修复'唯一密钥长度超出限制”?的详细内容。更多信息请关注PHP中文网其他相关文章!