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