【问题标题】:SQLSTATE[42000]: Syntax error or access violation: 1061 Duplicate key nameSQLSTATE[42000]:语法错误或访问冲突:1061 键名重复
【发布时间】:2022-11-19 18:45:42
【问题描述】:

以下迁移:

Schema::dropIfExists('personal_access_tokens');

Schema::create('personal_access_tokens', function (Blueprint $table) {
    $table->id();
    morphs('tokenable');
    string('name');
    string('token', 64)->unique();
    text('abilities')->nullable();
    timestamp('last_used_at')->nullable();
    timestamp('expires_at')->nullable();
    timestamps();
    index(['tokenable_type', 'tokenable_id']);
});

导致以下错误:

SQLSTATE[42000]:语法错误或访问冲突:1061 重复键 名称 'personal_access_tokens_tokenable_type_tokenable_id_index' (SQL: 改变表personal_access_tokens添加索引 personal_access_tokens_tokenable_type_tokenable_id_index(tokenable_type, tokenable_id))

你能帮我理解为什么会这样以及如何解决这个问题吗?

【问题讨论】:

    标签: laravel-8


    【解决方案1】:

    您首先需要删除创建的索引 tokenable_typetokenable_id 以重新创建表。

    Schema::table('personal_access_tokens', function ($table) {
        $table->dropIndex(['tokenable_type', 'tokenable_id']); // Drops indexes
    });
    

    在你这样做之后,你可以删除表并重新创建它。

    【讨论】:

      猜你喜欢
      • 2021-09-16
      • 2015-10-12
      • 2023-04-01
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多