mysql - Laravel - 无法解决违反完整性约束的问题

标签 mysql laravel-5

我创建了一个新的迁移以向现有表添加一列并向现有表添加外键。

这是新列的迁移:

Schema::table( 'events', function ( Blueprint $table ) {

     $table->integer( 'category_id' )->unsigned()->after( 'place_id' );
     $table->foreign('category_id')->references('id')->on('categories');
 } );

当我运行迁移命令时,我得到:

[Illuminate\Database\QueryException]                                                                                                                                           
  SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`meetmount`.`#sql-3c8_424`, CONSTRAINT `events_catego  
  ry_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)) (SQL: alter table `events` add constraint events_category_id_foreign foreign key (`category_id`) r  
  eferences `categories` (`id`))

[PDOException]                                                                                                                                                                 
  SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`meetmount`.`#sql-3c8_424`, CONSTRAINT `events_catego  
  ry_id_foreign` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`))  

我该如何解决?

最佳答案

错误的原因可能如下:

父表 categories 和/或子表 events 中已有记录。当您要引用父表的特定列 (id) 时,MySQL 会期望子表具有父表中存在的值,因此违反完整性约束

一个可能的解决方案(如果父级不为空)是在 events 表中为外键列添加一个默认值:

$table->integer( 'category_id' )->unsigned()->after( 'place_id' );
$table->foreign('category_id')->references('id')->on('categories')->default(1);

关于mysql - Laravel - 无法解决违反完整性约束的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34589219/

相关文章:

twitter-bootstrap-3 - 无法使用 SASS、Laravel 5 和 Elixir/Gulp 自定义 Twitter Bootstrap

laravel - 电话号码是整数还是字符串?

mysql - Laravel 5.4 Native Query 在 MY SQL 服务器上正常运行,但无法通过 Laravel Eloquent Query Builder 正常运行。我做错了什么?

mysql - sql加入where和1-n连接

MySQL 查询获取同级

php - 如何在 Laravel 5.2 中设置至少需要填写两个字段

php - 在提交到数据库之前返回已获取的字段

mysql - 使用 IN 子查询改进 MySQL 查询

python - 如何更新光标并获取实际空间?

PHP artisan migrate 不会迁移所有表