## 1. 문제 상황 설명
MySQL을 사용하다 보면 다음과 같은 오류를 자주 접하게 됩니다.
```
Unknown column 'media' in 'field list'
Unknown column 'media_type' in 'field list'
```
이 오류는 쿼리를 실행할 때 **존재하지 않는 컬럼을 참조할 경우** 발생합니다.
특히 PHP와 MySQL을 함께 사용할 때 자주 나타나는 대표적인 오류입니다.
---
## 2. 원인 분석
Unknown column 오류는 주로 다음과 같은 원인에서 발생합니다.
### (1) 컬럼이 실제로 존재하지 않는 경우
테이블에 해당 컬럼이 없는데 쿼리에서 사용한 경우입니다.
### (2) 컬럼명 오타
예: `medai`, `meida_type` 같은 단순 오타
### (3) 테이블 구조 변경 후 반영 안됨
DB에서는 컬럼을 삭제했는데 코드에서는 그대로 사용하는 경우
### (4) 다른 테이블을 조회 중인 경우
JOIN 또는 테이블 지정이 잘못된 경우
### (5) 백틱(`) 또는 따옴표 문제
컬럼명을 문자열로 잘못 인식하는 경우
---
## 3. 해결 방법
다음 순서대로 확인하면 대부분 해결됩니다.
### ✔ 1. 테이블 구조 확인
```sql id="m1k3pa"
DESCRIBE 테이블명;
```
또는
```sql id="x82mza"
SHOW COLUMNS FROM 테이블명;
```
👉 실제 컬럼 존재 여부 확인
---
### ✔ 2. 컬럼명 정확히 수정
```sql id="v91cpt"
-- 잘못된 예
SELECT media FROM posts;
-- 올바른 예
SELECT image FROM posts;
```
---
### ✔ 3. 컬럼 추가 (필요한 경우)
```sql id="d92kql"
ALTER TABLE posts ADD media VARCHAR(255);
```
---
### ✔ 4. PHP 코드와 DB 동기화
DB 컬럼과 PHP 코드가 동일해야 합니다.
```php id="p3z81k"
$sql = "INSERT INTO posts (title, content, media) VALUES (?, ?, ?)";
```
👉 DB에 media 컬럼이 반드시 있어야 함
---
### ✔ 5. 테이블명 확인
```sql id="a91kdd"
SELECT * FROM post; -- ❌ 잘못된 테이블명
SELECT * FROM posts; -- ✅ 올바른 테이블명
```
---
## 4. 코드 예시
다음은 오류가 발생하는 코드와 해결된 코드 비교입니다.
### ❌ 오류 발생 코드
```php id="c91zmx"
$sql = "INSERT INTO posts (title, content, media_type) VALUES (?, ?, ?)";
```
👉 media_type 컬럼이 없으면 오류 발생
---
### ✅ 해결 코드 (방법 1: 컬럼 추가)
```sql id="q12lsk"
ALTER TABLE posts ADD media_type VARCHAR(50);
```
---
### ✅ 해결 코드 (방법 2: 코드 수정)
```php id="w92kpl"
$sql = "INSERT INTO posts (title, content) VALUES (?, ?)";
```
---
## 5. 정리
Unknown column 오류는 대부분 단순하지만 자주 발생하는 문제입니다.
* 컬럼 존재 여부 확인
* 컬럼명 오타 체크
* DB와 코드 일치 여부 확인
* 테이블명 정확히 사용
이 네 가지만 확인하면 거의 모든 경우 해결할 수 있습니다.
---
💡 추가 팁
개발 중에는 테이블 구조를 자주 변경하기 때문에
**DB 스키마와 코드 동기화**를 항상 유지하는 것이 중요합니다.
Login with Google