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

是否使用迁移更新外键?

仲孙鸿畴
2023-03-14

我在一次迁移中犯了一个错误,我创建了外键,但忘记添加onDelete(“级联”),这导致无法删除具有外部关系的内容。由于级联未正确触发,删除失败。我该如何解决这个问题?

我希望进行新的迁移,并用丢失的onDelete更新外键

public function up()
{
    Schema::table('content_term', function (Blueprint $table) {
        $table->foreign('content_id')->references('id')->on('content')->onUpdate('cascade')->onDelete('cascade')->change();
    });
}

但是当我试着运行它时,我得到了这个

SQLSTATE[23000]:完整性约束违反: 1022不能写;表'#sql-4688_6b'中的重复键(SQL:改变表content_term添加约束content_term_content_id_foreign外键(content_id)引用内容(<<代码>id)上删除级联上更新级联)

我该怎么办?

共有1个答案

薛弘厚
2023-03-14

试着放下外国,再分配一次,也许会有帮助

Schema::table('content_term', function (Blueprint $table) {
    $table->dropForeign('content_term_content_id_foreign');
    $table->foreign('content_id')->references('id')->on('content')->onUpdate('cascade')->onDelete('cascade');
});

现在我发现了类似的问题Laravel::更新外键的最佳方法

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

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

  • 我已经向migrations.xml添加了新的变更集,但是当我运行时,它不会应用新的变更集,只是输出如下: 我有两个变更集,只应用了第一个变更集。例如: 另外,我只看到数据库更改日志表下的第一个更改集条目,这很奇怪。 如何使其应用我的新变更集?

  • 我需要重命名一个Flyway迁移文件。我已经在本地数据库上应用了迁移。 如何删除或重置本地postgres数据库,使其不存在Flyway迁移异常?

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

  • SQLAlchemy变更日志和迁移指南现在集成在主文档中。 当前迁移指南 SQLAlchemy 1.4有什么新功能? SQLAlchemy 2.0概述和状态 迁移到Alchemy 更改日志 1.4变更日志 1.3换热器 1.2换热器 1.1换热器 1换热器 0.9换热器 0.8换热器 0.7换热器 0.6换热器 0.5换热器 0.4换热器 0.3换热器 0.2换热器 0.1换热器 旧的迁移指南 S