Laravel の php artisan db:seed で SQLSTATE[42S02]: Base table or view not found: 1146 Table エラーが発生
Laravel の php artisan db:seed
を Amazon RDS の環境で実行すると、エラーが発生しました。
1 2 3 |
Illuminate\Database\QueryException : SQLSTATE[42S02]: Base table or view not found: 1146 Table '{db_name}.Groups' doesn't exist (SQL: insert into `Groups` ... |
Groups テーブルが存在しないというエラーです。もちろん migration では groups テーブルは作成していて、show tables
で存在しているのが確認できます。
原因は seeder ファイルの中で
1 2 3 4 5 6 7 8 9 10 |
class GroupsTableSeeder extends Seeder { public function run() { DB::table('Groups')->insert([ [ 'id' => 1, ... |
と書いているテーブル名の先頭が大文字で始まっていたことでした。 ‘Groups’ を ‘groups’ に書き換えることでエラーが出なくなりました。
理由は Laravel とは関係なく、MySQL が UNIX ではテーブルの大文字・小文字は区別され Windows や macOS (ファイルシステムによる) だと区別されないという違いがあるためでした。開発環境ではエラーにはならなかったので、なかなか気づきにくいところです。
ITエンジニア募集中!
キュアコード株式会社はITエンジニアを募集しております。少人数の職場なので、上流・下流やサーバー・クライアント対応の垣根なく、あなたの強みを活かしながら いろいろなことにチャレンジ可能です。エンジニアとしての未経験の方、経験が少ない方も歓迎しています。
下記よりITエンジニア募集の採用情報をご覧いただけます。