1
0

[解決済み]SQLSTATE[HY000]: General error: 1364 Field '---' doesn't have a default value

Last updated at Posted at 2024-08-20

解決しました

環境
Laravel 11.6.0
PHP 8.3.10
MySQL 8.4.0

目的

ユーザー登録フォームを作りたい。
WEBアプリケーションからデータベースに値を正常に挿入したい。

何が起きた?

CleanShot 2024-08-20 at 17.18.17@2x.png
「'email'ってフィールドが空っぽだしデフォルト値を入れようにも無いから困っちゃった」というエラー。
Emailは使わないのでマイグレーションを使ってemailカラムを削除したがこのようなエラーが出ている。

フォームにはEmail入力フィールドを作っていないし、SQL GUIツールでemailカラムが削除されていることを目視で確認。

migrations

作成

0001_01_01_000000_create_users_table.php
Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->nullable();
    $table->string('password');
    $table->rememberToken();
    $table->string('belongs');
    $table->timestamps();
});

カラム削除

2024_08_19_171010_remove_email_from_users_table.php
Schema::table('users', function (Blueprint $table) {
    $table->dropColumn('email');
    $table->dropColumn('email_verified_at');
});
2024_08_19_165549_remove_belongs_from_users_table.php
Schema::table('users', function (Blueprint $table) {
    $table->dropColumn('belongs');
});

カラム名変更

2024_08_20_160912_change_column_users_table.php
Schema::table('users', function (Blueprint $table) {
    $table->renameColumn('name', 'username');
});

ちなみにbelongsというカラムはユーザー登録機能を作ろうとした時に参考にしていた記事を真似たもの。
後々必要ないと思い削除した。

試み

  • 関係しそうなファイルにemailが残っていないか確認
    register.blade.php, UserController.php, Models/User.php, UserFactory.php, DatabaseSeeder.php, config/auth.php
  • エラーログ確認→これと同じ内容のエラーしか確認できず。
  • キャッシュ削除、Laravel, MySQLの再起動
  • php artisan migrate:fresh実行
  • 誤字脱字確認
  • php artisan db:seed実行→正常にサンプルが挿入された。

わからん

俺1人のユーザー登録さえできたら良いので いっそSQL GUIツールで直接データ追加しようとも思いましたが、これも良い機会なのでどうにか解決して身につけたい。

解決(2024/08/23)

[結論].env.localDB_DATABASE項目が間違えていただけだった。

プロジェクト内の全てのemailを検索し、削除またはコメントアウトしたもののこれは解決せず、怒ったので別のテーブルを作り直した。
しかし今度は違うエラーが発生…。
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'ourlaravelapp.admin' doesn't exist
とりあえずググるも解決には至らず、ログも同じことが書いてあるので堂々巡り。
エラー文と睨めっこ………あれ…?

ourlaravelapp…?この文字どこかで…。

ア!

これ!Udemyの教材で学習してた時に使ってたデータベース名だ!!
検索してみると.env.localDB_DATABASE=ourlaravelappの文字
なぜこちらのプロジェクトに前使っていたデータベースがあるのかは謎なものの、とりあえず現在使っているデータベース名に変更。
CleanShot 2024-08-23 at 17.15.48@2x.png
CleanShot 2024-08-23 at 17.16.56@2x.png

キタ━━━(゚∀゚)━━━!!
やりました!これにて解決です!!
また一歩進みました!

1
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0