【问题标题】:19 FOREIGN KEY constraint failed on Laravel19 FOREIGN KEY 约束在 Laravel 上失败
【发布时间】:2020-01-05 17:34:51
【问题描述】:

我正在尝试将数据写入我的 SQLite 数据库。我认为我的迁移文件和外键有错误。

我试图更改文件的名称,使外键可以为空并清除 Laravel 的缓存。

您是否熟悉错误处理程序显示的错误,或者您能否将我指向一个可以帮助我了解我做错了什么的页面?

提前非常感谢您。

迁移文件:

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateSqrTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('sqrs', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedInteger('user_id')->nullable(); 
            $table->string('qr_link');
            $table->timestamps();
            $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('sqr');
    }
}

模型文件:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

// sQR stands for Saved QR-Code


class sqr extends Model
{
    protected $fillable = [
        'qr_link', 'user_id'
    ];
}

保存的控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\sqr;

class saveController extends Controller
{
    public function save(Request $request)
    {
        $sqr = new sqr;
        $sqr->qr_link =     $request->qr_link;
        $sqr->user_id =     1;
        $sqr->save();

        return redirect('/');
    }
}

前端刀片文件:

<form method="post" action="/save">
        @csrf
       <input type="hidden" name="qr_link" value="{{ session('url') }}">
       <button class="btn btn-success">Save this QR</button>
    </form>

我得到的错误如下:

SQLSTATE[23000]: Integrity constraint violation: 19 FOREIGN KEY constraint failed (SQL: insert into "sqrs" ("qr_link", "user_id", "updated_at", "created_at") values (images/1567444499.svg, 1, 2019-09-02 17:37:23, 2019-09-02 17:37:23))

【问题讨论】:

  • 您确定数据库中有一个 id = 1 的用户吗?
  • @dparoli 哎呀......谢谢你帮助我。
  • @S-o 这是什么意思?如果这解决了问题,那么这个问题可能对其他人没有帮助,应该删除。你可以自己做。否则,请详细说明“糟糕”的含义。
  • 这是我问题的答案。我不能给他一颗星,因为这是一个普通的 t。
  • 您可以编写自己的答案并将其标记为已接受。对于那些寻找未回答问题的人非常有帮助。

标签: php sql laravel sqlite


【解决方案1】:

@dparoli 在这篇文章的评论中说:

“你确定你的数据库中有一个 id = 1 的用户吗?- dparoli”

这就是我的问题的答案。因为数据库中有nog user = 1,所以crash了。

【讨论】:

    猜你喜欢
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2019-11-01
    • 2018-11-06
    • 1970-01-01
    相关资源
    最近更新 更多