不可能DB:种子laravel

托马斯Ç:

早上好,

我无法从我的工厂将数据发送到我的数据库。

SQLSTATE[HY000]: General error: 1364 Field 'genre_id' doesn't have a default value (SQL: insert into `books` (`isbn`, `title`, `publish_date`, `updated_at`, `created_at`) values (4243421897, Prof., 1992-09-08 00:57:41, 2020-03-10 15:02:36, 2020-03-10 15:02:36))

我不知道在我迁移我必须指定我foreign_keys没有默认值...

这些都是我的文件:

create_books_table.php

 public function up()
    {
        Schema::create('books', function (Blueprint $table) {
            $table->engine = 'InnoDB';

            $table->id('isbn');
            $table->string('title' , 100);
            $table->text('cover')->nullable();
            $table->date('publish_date');
            $table->bigInteger('genre_id')->unsigned();
            $table->bigInteger('author_id')->unsigned();
            $table->bigInteger('user_id')->unsigned();
            $table->timestamps();

            $table->foreign('genre_id')
                ->references('id')->on('Genres')
                ->onUpdate('cascade')
                ->onDelete('cascade');

            $table->foreign('author_id')
                ->references('id')->on('Authors')
                ->onUpdate('cascade')
                ->onDelete('cascade');

            $table->foreign('user_id')
                ->references('id')->on('Readers')
                ->onUpdate('cascade')
                ->onDelete('cascade');
        });
    }

BookFactory.php

$factory->define(Book::class, function (Faker $faker) {
    return [
        'isbn' => $faker->isbn10,
        'title' => $faker->title,
        'publish_date' => $faker->dateTime()
    ];
});

我还没有创建了一个“路线”在我web.php所以我没有做过的CRUD过,我还没有修改我的刀,但我只是想建立我的整个数据库的时刻。但我不知道这是不是问题。

下面是从我的数据库的示意图:https://imgur.com/a/8Txn7x2(我不能上传图片还)

(我在学校的编码)

谢谢!

亚琛罗伯茨:

您已经定义了genre_id列被要求,或总是包含值。你的插入查询,不过,不包括genre_id价值。在这种情况下,MySQL将回落寻找配置为列的默认值,但是你有没有定义的。

默认值没有多大意义的外键样式列一样genre_id,除非你有特殊原因,指定一个默认的ID时,没有明确提供一个使用。

更好的选择是使列nullable,或者能够使用一个NULL值,而不是现有的ID。修改线迁移到:

$table->bigInteger('genre_id')->unsigned()->nullable();

当一个外键列nullable,也不会执行任何断言的NULL价值,唯一的非空值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章