当前位置: 首页 > 知识库问答 >
问题:

Laravel迁移:唯一键太长,即使指定了

居和顺
2023-03-14

我正在尝试迁移Laravel中的一个users表。当我运行迁移时,我会得到以下错误:

[Illuminate\Database\QueryException]SQLState[42000]:语法错误或访问冲突:1071指定的键太长;最大密钥长度为767字节(SQL:alter tableusersadd unique users_email_uniq(email))

Schema::create('users', function(Blueprint $table)
{
    $table->increments('id');
    $table->string('name', 32);
    $table->string('username', 32);
    $table->string('email', 320);
    $table->string('password', 64);
    $table->string('role', 32);
    $table->string('confirmation_code');
    $table->boolean('confirmed')->default(true);
    $table->timestamps();

    $table->unique('email', 'users_email_uniq');
});

共有1个答案

羿宏硕
2023-03-14

为电子邮件指定较小的长度:

$table->string('email', 250);

实际上,这是默认值:

$table->string('email');

你应该表现得很好。

对于Laravel 5.4,您可以在此Laravel 5.4中找到解决方案:指定的键太长错误,Laravel新闻发布:

正如迁移指南中所述,要解决这个问题,您所要做的就是编辑AppServiceProvider.php文件,并在引导方法中设置默认字符串长度:

use Illuminate\Database\Schema\Builder;


public function boot()
{
    Builder::defaultStringLength(191);
}
 类似资料:
  • 问题内容: 我正在尝试在Laravel中迁移用户表。运行迁移时,出现以下错误: [Illuminate \ Database \ QueryException] SQLSTATE [42000]:语法错误或访问冲突:1071指定的密钥太长;默认值为0。最大密钥长度为767字节(SQL:alter table 添加唯一的users_email_uniq()) 我的迁移如下: 经过一番谷歌搜索后,我发

  • 我知道这个问题被讨论,解决或关闭。 但我想问的是,为什么数字是191? 我试过:如果192,错了。191,好的。在此之后,我还编辑database\migrations\xxx\u user\u table.php 更改此设置 要成为 然后运行php工匠迁移,就可以了。使用一些mysql工具查看用户表的模式,名称的长度是varchar实际上是255,其他列是191。 我看到了这些文章 @https

  • 我创建了一个名为用户的表。有一些表被称为公司、名称、部门。我想添加company_id,designation_id,department_id列到用户表作为外键。 我试过了,但没用 当我迁移迁移时,它会显示此错误。 Illumb\Database\QueryException:SQLSTATE[HY000]:一般错误:1005无法创建表(错误号:150“外键约束格式不正确”)(SQL:alter

  • Laravel5.6运行于:PHP7.2,MariaDB 10.3 当我想为我的表设置外键时,我只是不断地犯这个错误。 在其他表中,由Laravel本身定义的所有id变量和无符号自动增量 所以,我的迁移是这样的: 错误如下所示: SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以了解在LINE 1(SQL:alter

  • 我正在更新我们应用程序中落后的一些maven依赖项,从flyway maven插件4.2.0升级时遇到了一个问题,我们的reset和migrate make命令失败了,我找不到任何有用的结果。 最初,我试图从4.2.0转移到5.2.4。当我无法解决我的错误时,我退回到5.0.0的单个版本。在5.0.0的发行说明之后,我将添加到我的flyway-$env.properties文件中,并更新了我的Ma

  • 我想在用户表中添加一个外键: 一个用户有一个城镇(法语为ville),一个城镇可以有多个用户: 我的村庄(城镇)迁移 我重命名了迁移(我不知道这样做是否有好处?),这是我迁移的顺序,正如您所看到的,我在用户之前创建了villes: 我在终端中发现了这个错误: 照亮\数据库\查询异常 SQLSTATE[42000]:语法错误或访问冲突:1072键列“villes\u id”在表中不存在(SQL:al