LaravelのDBマイグレーションで、こんな感じのエラーが出た。
Cannot declare class TableName, because the name is already in use
(訳)名前が既に使用されているため、クラス TableName を宣言できません
エラーメッセージ的にクラス名が被っているというエラーメッセージであるが、いくら見渡しても名前が被っでいるファイルはなく、一部のサイトでは「namespace」の問題とあるが、マイグレーションのファイルには「namespace」を指定しないので、一体絶対、何がダメなのか分からない。
原因はファイル名
原因はファイル名を間違えるという単純ミス。
マイグレーションのファイル名とクラス名にはルールがあり、これが間違っていると冒頭のエラーが出るらしい。(エラーメッセージが紛らわしい)
ファイル名のルール
ファイル名は次の形式の沿っている必要がある。
yyyy_mm_dd_hhmmss_テーブル名_table.php
今回、私は後ろの _table
をつけ忘れてのが原因でエラーになった。
クラス名のルール
マイグレーションのクラス名は、以下の命名ルールである。
Create[テーブル名]Table
テーブル名をスネークケースにした名前にする。
例えばテーブル名が「user_sales」ならクラス名は「CreateUserSalesTable」だ。
0 件のコメント:
コメントを投稿