カラム追加後にエラー: SQLSTATE[HY000]: General error: 1364 Field
解決したいこと
ネットの記事を参考にしながらツイッターのような簡単な投稿サイトを作成しています。
ログイン機能実装中で、ユーザーのダミーデータを作っています。
一覧表示から投稿実装までのCRUDの流れを確認しながら進めて、ログイン機能を追加実装してます。
'user_id'カラムを追加しましたが、下記エラーが出ます。
投稿用のダミーデータは、ログイン機能までまで問題なかったです。
発生している問題・エラー
Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1364 Field
Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value (SQL: insert into `posts` (`created_at`, `updated_at`, `subject`, `message`, `name`) values (2013-02-13 02:11:00, 1972-03-04 01:34:26, つゆが太陽たいの活字かつかった。, ませんなは乗のらな草や、いっぱいしょう」ジョバンニは[#小書き平仮名ん、ぼんやり白く見えましたちはかすか」ジョバンニは帽子ぼうしろの方を見ているのでした。その鶴つるしは、もうたびはしたような笛ふえを吹ふきなりませんでした。「君たちしっかささぎだねえ」「みんなにうな青じろいろの天上なんだ」カムパネルラにたずねましたりした。「いや森が、なんだねえ」ジョバンニが勢いきないで河かわらっと白服しろはジョバ。, 吉本 京助))
該当するソースコード
laravel-app/app/Post.php
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
/**
* 投稿データを所有するユーザを取得
*/
public function user()
{
return $this->belongsTo('App\User');
}
// 割り当て許可
protected $fillable = [
'name',
'subject',
'message',
'user_id',
#'category_id'
];
/2021_03_10_101736_create_posts_table.php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreatePostsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->bigIncrements('id');
$table->timestamps();
$table->string('is_deleted', 4)->default('0');
#$table->integer('category_id');
$table->string('subject');
$table->text('message');
$table->string('name');
$table->unsignedBigInteger('user_id'); #追加
$table->foreign('user_id')->references('id')->on('users'); #追加
});
}
laravel-app/database/seeds/PostsTableSeeder.php
use Illuminate\Database\Seeder;
class PostsTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
factory(App\Post::class, 50)
->create()
->each(function ($post) {
$comments = factory(App\Comment::class, 2)->make();
$post->comments()->saveMany($comments);
}
);
}
}
factories/UserFactory.php
$factory->define(User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'remember_token' => Str::random(10),
];
});
自分で試したこと
テーブルを書き直したので、migrate:refreshをしました。
つぎにダミーデータを作成したかったので、(PostsTableSeeder,UsersTableSeeder)
PostsTableSeederでエラーになってしまいました。
user.idを追加したので、以前に作った投稿用のダミーデータに問題が起きてしまいました。
$ php artisan migrate:refresh
Dropped all tables successfully.
Migration table created successfully.
$ php artisan db:seed
Seeding: PostsTableSeeder
Illuminate\Database\QueryException : SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value (SQL: insert into `posts` (`created_at`, `updated_at`, `subject`, `message`, `name`) values (2009-03-17 21:24:11, 1995-05-09 11:23:37, よ。ね、あらわたく時々たいまし。, ろなあ。押おして、眼めをそらにわからおまえにラッコの上の槍やりとりは、ガラスの木のような鷺さぎがあったように待まっ黒な野原かわらい牛舎ぎゅうに何があるい輪わを刻きざんに来ました。ジョバンニは何も見つめたくさんとうだ。レートででもあとはねあがりなけぁいけないよ」「うんどんなさんの柱はしましたべてにわたくさんたいようとうになに言いってそうそのとおい、ありまわりました。ジョバンニはまた黒い服ふくをつか。, 宇野 直子))
Exception trace:
1 PDOException::("SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value")
/var/www/html/laravel-app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:458
2 PDOStatement::execute()
/var/www/html/laravel-app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:458
end
参考記事
ログイン機能
https://note.com/yuki_biwako/n/n696cb97b64b7
投稿関係
https://nodoame.net/archives/11628#vol9
0