Laravel 11.6.0
PHP 8.3.10
MySQL 8.4.0
目的
ユーザー登録フォームを作りたい。
WEBアプリケーションからデータベースに値を正常に挿入したい。
何が起きた?
「'email'ってフィールドが空っぽだしデフォルト値を入れようにも無いから困っちゃった」というエラー。
Emailは使わないのでマイグレーションを使ってemailカラムを削除したがこのようなエラーが出ている。
フォームにはEmail入力フィールドを作っていないし、SQL GUIツールでemailカラムが削除されていることを目視で確認。
migrations
作成
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();
});
カラム削除
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('email');
$table->dropColumn('email_verified_at');
});
Schema::table('users', function (Blueprint $table) {
$table->dropColumn('belongs');
});
カラム名変更
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.local
のDB_DATABASE
項目が間違えていただけだった。
プロジェクト内の全てのemail
を検索し、削除またはコメントアウトしたもののこれは解決せず、怒ったので別のテーブルを作り直した。
しかし今度は違うエラーが発生…。
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'ourlaravelapp.admin' doesn't exist
とりあえずググるも解決には至らず、ログも同じことが書いてあるので堂々巡り。
エラー文と睨めっこ………あれ…?
ourlaravelapp
…?この文字どこかで…。
ア!
これ!Udemyの教材で学習してた時に使ってたデータベース名だ!!
検索してみると.env.local
にDB_DATABASE=ourlaravelapp
の文字
なぜこちらのプロジェクトに前使っていたデータベースがあるのかは謎なものの、とりあえず現在使っているデータベース名に変更。
キタ━━━(゚∀゚)━━━!!
やりました!これにて解決です!!
また一歩進みました!