19 Laravel上的FOREIGN KEY约束失败

时间:2019-09-02 17:52:02

标签: php sql laravel sqlite

我正在尝试将数据写入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))

1 个答案:

答案 0 :(得分:0)

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

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

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