ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
エラー内容
ERROR 1054 (42S22): Unknown column 'users.id' in 'field list'
# 'field list' = SELECT 句で起きた
# 'where clause' = WHERE 句で起きた
# 'on clause' = JOIN ON 句で起きた
# 'order clause' = ORDER BY で起きた
MySQL が「指定されたカラムやテーブル.カラム表記が見当たらない」と言っているエラーです。SQL のどの句で起きたかが括弧内に明記されるので、まずそこを読みます。
原因 1: カラム名 / テーブル名のタイポ
-- ❌ 実際のカラムは user_id だが userid と書いた
SELECT userid FROM orders;
-- ERROR 1054: Unknown column 'userid' in 'field list'
-- 確認
SHOW COLUMNS FROM orders;
DESC orders;
-- ✅ 修正
SELECT user_id FROM orders;
原因 2: AS でエイリアスを付けた後に元テーブル名で参照
もっとも多い罠。FROM や JOIN でエイリアスを付けると、その SQL 内では元テーブル名は使えません:
-- ❌ エイリアス u を付けたのに users.id を参照
SELECT users.id, users.name
FROM users AS u
JOIN orders AS o ON o.user_id = users.id;
-- ERROR 1054: Unknown column 'users.id' in 'field list'
-- ✅ エイリアスで統一
SELECT u.id, u.name
FROM users AS u
JOIN orders AS o ON o.user_id = u.id;
原因 3: サブクエリのスコープミス
サブクエリの内側からは外側のカラムが見えない場合がある(相関サブクエリ以外):
-- ❌ サブクエリ内に products.category_id は無い
SELECT p.name
FROM products p
WHERE p.id IN (
SELECT id FROM products_top
WHERE products.category_id = 5 -- ★ 外側の products を参照
);
-- ERROR 1054: Unknown column 'products.category_id' in 'where clause'
-- ✅ 内側にも参照を入れるか、JOIN に書き換える
SELECT p.name
FROM products p
JOIN products_top pt ON pt.id = p.id
WHERE p.category_id = 5;
原因 4: JOIN の ON 句でテーブル名が違う
-- ❌ JOIN したテーブル名と ON 句が食い違う
SELECT *
FROM users u
JOIN orders o ON o.user_id = customers.id;
-- ERROR 1054: Unknown column 'customers.id' in 'on clause'
-- ✅ 修正
SELECT *
FROM users u
JOIN orders o ON o.user_id = u.id;
原因 5: GROUP BY / ORDER BY での参照ミス
-- ❌ SELECT で別名を付けたカラムを別名で ORDER BY しているが、
-- その別名と異なる名前を使った
SELECT
u.name,
COUNT(*) AS cnt
FROM users u
JOIN orders o ON o.user_id = u.id
GROUP BY u.id
ORDER BY count; -- ★ 別名は cnt
-- ERROR 1054: Unknown column 'count' in 'order clause'
-- ✅
ORDER BY cnt;
切り分けの手順
- エラー末尾の
in 'xxx clause'でどの句かを特定 SHOW COLUMNS FROM テーブル名で実カラム確認- SQL の
FROM/JOINでつけたエイリアスを洗い出す - エイリアスを使うなら全箇所エイリアスに統一
- サブクエリは内側だけで完結しているか確認
Laravel Eloquent でのケース
join('orders as o', 'o.user_id', '=', 'u.id')
->select('users.id', 'users.name') // ← ここ
->get();
// SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.id'
// ✅ エイリアスで統一
$users = DB::table('users as u')
->join('orders as o', 'o.user_id', '=', 'u.id')
->select('u.id', 'u.name')
->get();
// デバッグ: 実際に発行される SQL を確認
$sql = DB::table('users as u')
->join('orders as o', 'o.user_id', '=', 'u.id')
->select('u.id')
->toSql();
dd($sql);
Eloquent モデルでの場合
orderBy('order_count') // ★ 実際は orders_count
->get();
// Unknown column 'order_count'
// ✅
$users = User::withCount('orders')
->orderBy('orders_count')
->get();
マイグレーション直後に出る場合
「ローカルでは動いていたのに本番だけ出る」場合、マイグレーションが本番で未実行の可能性:
# Laravel
php artisan migrate:status
php artisan migrate --force
# 該当テーブルのカラム状態を直接確認
mysql -u root -p myapp -e "SHOW COLUMNS FROM users"
FAQ
Q: 大文字小文字が違うだけでも出る?
A: Linux の MySQL はテーブル名で大小区別あり(既定 lower_case_table_names=0)。Users と users は別物扱い。カラム名は大小区別なし。
Q: 予約語を使っていると出る?
A: エラーは 1064 syntax error になることが多いですが、バッククォートを忘れて Unknown column になる場合も。SELECT `order` FROM orders のようにバッククォートで囲む。
Q: ビューやマテビューでも同じ?
A: ビューの定義 SQL に問題があると SELECT * FROM view 実行時に 1054 が出ます。SHOW CREATE VIEW view_name で定義を確認。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
- Invalid HTTP_HOST header: '...'. You may need to add '...' to ALLOWED_HOSTS
- CommandError: You must set settings.ALLOWED_HOSTS if DEBUG is False.
- django.utils.datastructures.MultiValueDictKeyError
- Forbidden (403) CSRF verification failed. Request aborted.
- ModuleNotFoundError: No module named 'MySQLdb'
- WARNINGS: ?: (mysql.W002) MySQL Strict Mode is not set for database connection
- Unknown column 'table_name.id' in 'field list'
- RuntimeError: Model class ~ doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
- get() returned more than one MynumberRegist -- it returned 2!
- django.db.utils.OperationalError: (2006, "Can't connect to MySQL server")
- 'include' is not defined
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- Laravel キャッシュクリア完全ガイド(cache:clear / config:clear / 2026-05-18 07:42:07
- プロジェクトの作成と削除 2026-05-18 07:42:07
- インストール直後にNetbeansが反応しない 2026-05-18 07:42:07
- 動画やチャンネルの検索 2026-05-18 07:42:07
- APIキー取得方法 2026-05-18 07:42:07
- チャンネル情報の取得 2026-05-18 07:42:07
- API 入門 — Web API(REST / GraphQL / gRPC / 2026-05-18 07:42:07
- インストール(eclipseプラグイン) 2026-05-18 07:42:07
- Laravel「Dotenv values containing spaces must be surrounded 2026-05-18 07:42:07
- エラー一覧 2026-05-18 07:42:07
- curl: (51) SSL: certificate subject name '~' does not match 2026-05-18 07:42:07
- インストール方法(Windows版) 2026-05-18 07:42:07
- JSONから配列に変換 2026-05-18 07:42:07
- 処理を一定時間待つ 2026-05-18 07:42:07
- A non well formed numeric value encountered 2026-05-18 07:42:07
コメントを削除してもよろしいでしょうか?