SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘name’ in ‘field list’ の解決法

アイキャッチ画像
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'name' in 'field list'

エラー発生時

モデルを新規作成して保存しようとしたとき。Laravel開発のSQL(データベース)エラーです。

例えば、Memerモデルとmembersテーブルがあるとして、membersテーブルの構成は次のようになっているとします。

id
family_name
email
password
membersテーブル

なにかのメンバーを新規作成できるアプリで、フォームに情報を入力して「新規作成」ボタンを押したら、エラーが発生したというイメージです。

以下、あなたの環境に置き換えて対応してください。

原因

‘name’カラムがmembersテーブルに存在しないため。

エラー文を和訳すると「’field list’に不明なカラム’name’があります。」です。

勘違いしてはいけないのが、「’field list’というテーブルに’name’カラムが無い」というエラーではないということですね。

ちょっとした打ち間違いで起きやすいエラーだと思います。

解決法

次の2つの場合に分けて解決法を解説します。

  • コントローラーの関数の内容が間違えている
  • テーブルのカラム名が間違えている

コントローラーの関数の内容が間違えている

次のように修正しましょう。

public function store(Request $request)
{
    $member = new Member;

    // 間違い例
    // $member->name = $request->name;

    // 正しい書き方
    $member->family_name = $request->name;
    
    // 以下、略
}

inputタグのname属性を’family_name’に変更すると

// 正しい書き方
$member->family_name = $request->family_name;

と書けるので、分かりやすくて良いかもしれません。

テーブルのカラム名が間違えている

今回の例だと、そもそも’family_name’カラムが誤りである場合です。

membersテーブルを次のように修正しましょう。

family_name → name

テーブルのカラム名は

  • SQL文を書く
  • phpMyAdminなどのクライアントツールを使う

などで、変更できます。

以上、『SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘name’ in ‘field list の解決法』でした。

error:コンテンツのコピーは禁止されています。
タイトルとURLをコピーしました