DEV WIKI
백엔드 · 오류·증상

Table '%s' is read only

MySQL 오류 1036(ER_OPEN_AS_READONLY)의 메시지 형식을 확인하는 문서입니다.

빠른 답변

우선 확인할 원인
현재 오류 메시지가 `Table '<테이블명>' is read only` 형식이고 오류 번호가 1036, SQLSTATE가 HY000이면 MySQL의 ER_OPEN_AS_READONLY 오류입니다.
먼저 확인할 항목
현재 오류 메시지가 `Table '<테이블명>' is read only` 형식인지 확인합니다.
적용 범위
현재 증상과 본문에 적은 관찰 조건이 함께 확인된 경우
출처 확인일
2026-07-29
최종 검토
2026-07-24
수정일
2026-07-27
오류·수정 제보 (새 창에서 열림)

현재 증상

  • 애플리케이션 오류 메시지

먼저 확인할 항목

현재 오류 메시지가 `Table '<테이블명>' is read only` 형식인지 확인합니다.

오류 번호 `1036`, 심볼 `ER_OPEN_AS_READONLY`, SQLSTATE `HY000`과 대조합니다.

환경별 원인과 조치

확인

현재 클라이언트 또는 오류 로그의 오류 메시지가 Table '<테이블명>' is read only 형식인지 확인합니다.

오류 번호가 1036, 심볼이 ER_OPEN_AS_READONLY, SQLSTATE가 HY000인지 공식 참조와 대조합니다.

세 값과 메시지 형식이 일치하면 MySQL의 ER_OPEN_AS_READONLY 오류로 식별합니다.

출처

진단 기록

먼저 문제가 발생한 URL 또는 화면, 표시 시각, 사용한 플랫폼과 배포 버전을 기록합니다. 화면과 로그에서 오류 문자열이 일부만 보이면 앞뒤 문장을 포함해 원문을 보존하고, 민감한 값은 가립니다.

다음 순서로 관찰값을 대조합니다.

  1. 현재 오류 메시지가 Table '<테이블명>' is read only 형식인지 확인합니다.
  2. 오류 번호 1036, 심볼 ER_OPEN_AS_READONLY, SQLSTATE HY000과 대조합니다.

각 항목은 확인한 값과 확인하지 못한 이유를 함께 기록해야 합니다. 이 문서의 조건과 실제 관찰값이 다르면 원인을 단정하지 말고, 문제 해결 시작 가이드에서 더 넓은 분기를 선택하십시오.

판정 기준

오류 문자열이 일치한다는 사실만으로 원인이 확정되지는 않습니다. 같은 문구가 여러 환경에서 나타날 수 있으므로 웹서버·런타임·운영체제·최근 변경 사항을 함께 비교합니다. 한 단계에서 기대한 값이 나오지 않으면 다음 단계로 넘어가지 말고 해당 환경의 공식 문서를 우선 확인합니다.

안전한 다음 단계

검사 전에 백업과 변경 이력을 확인하고, 비밀번호·세션 쿠키·인증 토큰·개인정보를 공개 로그나 문의 내용에 넣지 않습니다. 설정·권한·데이터를 변경해야 한다면 영향 범위와 되돌리는 방법을 먼저 기록한 뒤 운영 시간과 승인 절차에 맞춰 진행합니다.

원인 분포

[Observation] 입력된 3건의 사례에서는 다음 원인이 각각 1건씩 관측되었습니다.

원인 범주관측 사례 수
innodb_force_recovery 설정으로 인한 복구 모드1
Workbench가 행 식별 키를 확인하지 못한 결과1
조인·집계 결과의 읽기 전용 특성1

[Observation] 위 비율은 수집된 사례의 구성만 나타내며 실제 발생 빈도를 의미하지 않습니다.

오진 함정

  • [Observation] primary key가 있어도 조인·집계 결과는 읽기 전용일 수 있습니다.
  • [Observation] Workbench의 읽기 전용 표시는 서버가 쓰기를 거부한 경우와 결과 집합을 직접 수정할 수 없는 경우를 모두 포함할 수 있습니다.
  • [Hypothesis] 오류 메시지만으로 테이블 자체의 저장 엔진 문제라고 판단하면 Workbench 결과 집합의 구조와 권한 문제를 놓칠 수 있습니다.

환경 매트릭스

환경·입력증상근본원인수정결과
MySQL 서버, innodb_force_recovery 설정업데이트 시 읽기 전용 오류복구 설정으로 정상 쓰기 모드가 아님복구 설정 제거 후 정상 모드로 재시작쓰기 가능
MySQL Workbench, 단일 테이블 결과결과 편집 불가행 식별용 primary key 또는 복합 primary key 부재고유 키 정의결과 편집 가능
MySQL Workbench, 조인·집계 결과결과 읽기 전용조인·집계 결과 자체의 수정 불가 특성단일 테이블 단순 조회 결과에서 수정 시도, UPDATE 권한 별도 확인원인 구분 가능

진단 순서

  1. [Observation] 오류가 서버의 실제 쓰기 작업에서 발생했는지, MySQL Workbench 결과 편집에서 발생했는지 구분합니다.
  2. [Observation] 서버 쓰기 작업이라면 innodb_force_recovery 설정 여부와 정상 모드 재시작 여부를 확인합니다.
  3. [Observation] Workbench 결과라면 단일 테이블의 단순 조회인지, 조인·집계 결과인지 확인합니다.
  4. [Observation] 단일 테이블 결과에서는 행 식별용 primary key 또는 복합 primary key가 정의되어 있는지 확인합니다.
  5. [Observation] UPDATE 권한을 별도로 확인합니다.
  6. [Hypothesis] 각 확인 결과에 따라 서버 복구 모드, 행 식별 키 부족, 결과 집합의 수정 불가 특성을 분리해 판단합니다.

참고 자료

MySQL :: MySQL 8.0 Error Reference :: 2 Server Error Message Reference (새 창에서 열림)

MySQL · 공식 자료 · 확인 범위: MySQL 오류 번호 1036의 심볼은 ER_OPEN_AS_READONLY입니다., MySQL 오류 번호 1036의 SQLSTATE는 HY000입니다., MySQL 오류 번호 1036의 메시지는 `Table '%s' is read only`입니다. · 확인일: 2026-07-24

Stack Overflow · 운영 사례 (새 창에서 열림)

확인 범위: innodb_force_recovery 설정 상태에서 MySQL 업데이트가 실패했습니다., 복구 설정을 제거하고 서버를 정상 모드로 재시작한 뒤 쓰기 작업이 가능해졌습니다. · 확인일: 2026-07-29

Stack Overflow · 운영 사례 (새 창에서 열림)

확인 범위: MySQL Workbench 결과에 행을 식별할 수 있는 키가 없어 읽기 전용으로 표시되었습니다., primary key 또는 복합 primary key를 정의한 뒤 결과를 편집할 수 있게 되었습니다. · 확인일: 2026-07-29

Stack Overflow · 운영 사례 (새 창에서 열림)

확인 범위: Workbench의 조인·집계 결과는 primary key가 있어도 읽기 전용으로 표시될 수 있습니다., 단일 테이블의 단순 조회 결과에서 직접 수정을 시도하고 UPDATE 권한을 별도로 확인했습니다. · 확인일: 2026-07-29