【问题标题】:Laravel MySQL Cannot insert null in nullable foreign keyLaravel MySQL无法在可为空的外键中插入null
【发布时间】:2015-08-26 14:23:06
【问题描述】:

我对这个错误/错误快要疯了。我正在使用 Laravel 4.2 开发一个应用程序,在该应用程序中创建了一个像这样的表:

Schema::create('stock_items', function(Blueprint $table){
  ....
  $table->integer('color_id')->unsigned()->nullable();
  $table->integer('size_id')->unsigned()->nullable();
  ....
  $table->foreign('color_id')->references('id')->on('colors');
  $table->foreign('size_id')->references('id')->on('sizes');
});

两列都可以是null,但是当我插入这样的内容时:

$stock_item->color_id = NULL;
$stock_item->size_id = NULL;

我收到一个 MySQL 错误告诉我:Could not insert: Cannot add or update a child row: a foreign key constraint fails

但是,如果我在任何 MySQL 客户端中运行完全相同的查询 laravel 日志,则会插入该行。那么,这是怎么回事??

【问题讨论】:

    标签: php mysql laravel-4


    【解决方案1】:

    如果使用 mySQL 客户端一切正常,您应该会看到您的 SQL 语句和 Laravel 的有什么区别。

    $queries = DB::getQueryLog();
    $last_query = end($queries);
    

    检查 Laravel 执行了什么。

    【讨论】:

    • 查询未添加到查询日志中。我想是因为它失败了。但它发送这条消息:(SQL: insert into `model_items_stock` (`model_item_id`, `color_option_id`, `size_option_id`, `updated_at`, `created_at`) values (1, NULL, NULL, 2015-06-11 21:03:23, 2015-06-11 21:03:23)) 我运行并工作。
    • 你隔离你的代码了吗?也许在这个查询之后还有另一个有问题的查询。
    • 事实并非如此,这是函数运行的唯一查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多