Database

[MySQL] SQL Error [1136] [21S01]: Column count doesn't match value count at row 1

비번변경 2022. 7. 17. 22:04

Column count doesn't match value count at row 1

대개 테이블에 데이터를 추가할 때 발생하는 에러로, 추가할 데이터의 컬럼 수와 테이블의 컬럼 수가 다르거나 데이터 타입이 다를 때 발생한다.

 

 

예시

아래와 같은 스키마를 가진 docs 테이블이 있다고 하자.

CREATE TABLE IF NOT EXISTS `docs` (
  `id` int(6) unsigned NOT NULL,
  `rev` int(3) unsigned NOT NULL,
  `content` varchar(200) NOT NULL,
  PRIMARY KEY (`id`,`rev`)
) DEFAULT CHARSET=utf8;

이 테이블에 아래의 INSERT 명령을 실행하면, 에러가 발생하는 것을 알 수 있다.

INSERT INTO `docs` (`id`, `rev`, `content`) VALUES
  ('4', 'The earth is flat');

INSERT 에러

 

 

해결

정의한 테이블 스키마에 맞게 데이터를 추가하면 된다. 데이터 사이에 쉼표를 빠트리진 않았는지도 확인해본다.

INSERT INTO `docs` (`id`, `rev`, `content`) VALUES
  ('4', '2', 'The earth is flat');

또한, 테이블 컬럼명에 Key, default, Null과 같은 예약어가 포함되어 있어도 같은 에러가 발생할 수 있다.

그리고 테이블 뒤에 컬럼명을 명시하지 않을 경우에는 항상 모든 컬럼의 데이터를 작성해야 한다.

INSERT INTO `docs` VALUES
  ('4', '2', 'The earth is flat');

 

 

참고 문서

https://jeonjin.tistory.com/469

https://stackoverflow.com/questions/21785975/mysql-error-1136-21s01-column-count-doesnt-match-value-count-at-row-1