Laravel SQLSTATE[23000] 无法删除或更新父行:外键约束失败

Posted

技术标签:

【中文标题】Laravel SQLSTATE[23000] 无法删除或更新父行:外键约束失败【英文标题】:Laravel SQLSTATE[23000] Cannot delete or update a parent row: a foreign key constraint fails 【发布时间】:2021-12-14 02:54:00 【问题描述】:

我希望你没事,我只是想发布这篇文章,因为 down() 函数和删除列以及所有这些东西对我也不起作用。

例如:

public function down()

    Schema::table('users', function($table)
    
        $table->dropColumn(array('description1', 'description2', 'description3'));
    );

来自这篇文章:Laravel migrate:rollback adding and deleting table columns。

【问题讨论】:

【参考方案1】:

我编写了一个简单的命令行来按顺序删除所有表。

代码:

Artisan::command('delete-all', function() 
    (Schema::dropIfExists('bloggers'));
    (Schema::dropIfExists('ticket_labels'));
    (Schema::dropIfExists('labels'));
    (Schema::dropIfExists('tickets'));
    (Schema::dropIfExists('service_admins'));
    (Schema::dropIfExists('services'));
    (Schema::dropIfExists('admins'));
    (Schema::dropIfExists('admin_roles'));
    (Schema::dropIfExists('priorities'));
    (Schema::dropIfExists('statuses'));
    (Schema::dropIfExists('users'));
    (Schema::dropIfExists('failed_jobs'));
    (Schema::dropIfExists('migrations'));
    (Schema::dropIfExists('password_resets'));
    (Schema::dropIfExists('personal_access_tokens'));
    // After deleting all the tables, now executing migrate command-line.
    exec('php artisan migrate');
    $this->comment('Done');
)->purpose('Deleting all the tables on database');

我希望你喜欢:)。 享受吧。

【讨论】:

【参考方案2】:

问题可能是您正在尝试应用适用于旧版本 Laravel 的解决方案,如果您正在使用新版本,最好使用方括号来定义数组是什么。

public function down() 
    Schema::table('users', function($table) 
        $table->dropColumn(['description1', 'description2', 'description3']);
    );

我建议你检查你正在使用的 laravel 的版本,并根据版本寻找答案。

【讨论】:

以上是关于Laravel SQLSTATE[23000] 无法删除或更新父行:外键约束失败的主要内容,如果未能解决你的问题,请参考以下文章

SQLSTATE[23000]:Laravel 中的完整性约束违规

Laravel:数据表的 SQLSTATE [23000] 错误

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

SQLSTATE[23000]:违反完整性约束:在 Laravel 5.2 中

Connection.php 第 729 行中的 QueryException:SQLSTATE[23000]:Laravel 5.2

Laravel 7 错误 - SQLSTATE [23000]:完整性约束违规:1048 列 'first_name' 不能为空