SQLSTATE[23000]:完整性约束违规 1452 无法添加或更新子行:外键约束失败

Posted

技术标签:

【中文标题】SQLSTATE[23000]:完整性约束违规 1452 无法添加或更新子行:外键约束失败【英文标题】:SQLSTATE[23000]: Integrity constraint violation 1452 Cannot add or update a child row: a foreign key constraint fails 【发布时间】:2021-09-29 20:39:40 【问题描述】:

我有这个迁移文件

class AddRolesFieldsToUsersTable extends Migration

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    
        Schema::table('users', function (Blueprint $table) 
            $table->foreignId('role_id')->constrained();
            $table->string('student_address')->nullable();
            $table->string('student_licence_number')->nullable();
            $table->string('teacher_qualifications')->nullable();
        );
    

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    
        Schema::table('users', function (Blueprint $table) 
            //

并且用户模型具有如下所示的所有可填充项

class User extends Authenticatable

    use HasApiTokens;
    use HasFactory;
    use HasProfilePhoto;
    use Notifiable;
    use TwoFactorAuthenticatable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name',
        'email',
        'password',
        'role_id',
        'student_address',
        'student_licence_number',
        'teacher_qualifications',
    ];

但是我得到了 SQLSTATE[23000]:完整性约束违规 1452 无法添加或更新子行:当我尝试注册新用户时外键约束失败,我应该如何解决这个问题?

【问题讨论】:

【参考方案1】:

要解决此问题,请手动将角色值插入数据库。

所以对于第一行:

id=2 | name=Teacher | created_at =0000-00-00 00:00:00|updated_at 0000-00-00 00:00:00

第二行:

id=3 | name=Student| created_at =0000-00-00 00:00:00|updated_at 0000-00-00 00:00:00

【讨论】:

以上是关于SQLSTATE[23000]:完整性约束违规 1452 无法添加或更新子行:外键约束失败的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE[23000]:完整性约束违规 1452 无法添加或更新子行:外键约束失败

Laravel - SQLSTATE [23000]:完整性约束违规:1062 键“posts_user_id_unique”的重复条目“1”

Innobyte 插件问题:SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行

SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败

Laravel:正确保存后返回重定向抛出 SQLSTATE [23000]:完整性约束违规

SQLSTATE [23000]:完整性约束违规:1452 无法添加或更新子行:外键约束失败 - Laravel