【问题标题】:Unable to add a new column with foreign key无法使用外键添加新列
【发布时间】:2019-12-23 08:38:17
【问题描述】:

我是 laravel 新手,向现有表添加新列时出现上述错误:

SQLSTATE[23000]:违反完整性约束:1452 无法添加或 更新子行:外键约束失败 (schoolmanagement.#sql-314_2c, 约束 students_parentsid_foreign 外键 (parentsid) 参考 parent_names (id) ON DELETE CASCADE) (SQL: alter table students 添加约束students_parentsid_foreign外键(parentsid) 删除级联时引用parent_names (id)

    public function up(){
        Schema::table('students', function (Blueprint $table)
        {
            $table->unsignedBigInteger('parentsid')->after('id');
            $table->foreign('parentsid')->references('id')->on('parent_names')->onDelete('cascade');
        });
    }


    public function down()
    {
        Schema::table('students', function (Blueprint $table) {
            //
        });
    }

只需要用外键为现有表插入一列

【问题讨论】:

    标签: laravel


    【解决方案1】:

    这是因为您试图创建一个具有外键约束但没有设置默认值的新列。因此,您可以将其设置为 nullable 或设置默认值(必须是 parent_names 表中的现有 ID)

    $table->unsignedBigInteger('parentsid')->default(1);
    

    【讨论】:

    • 或者您可以添加没有约束的列,然后更新您的数据,以便在添加时所有记录都满足约束。
    猜你喜欢
    • 2021-12-14
    • 1970-01-01
    • 2013-02-26
    • 2017-05-10
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 2016-02-16
    相关资源
    最近更新 更多