2014-10-22
테이블에 select 이외에 insert나 update를 하려고하는데, table 'table_name' is read only라는 에러가 뜬다면,
해당 테이블이 존재하는 위치에 가서 읽기 권한을 살펴 보면 된다.

보통 해당 테이블은 /var/lib/mysql/해당db/ 위치에 있을 것이다.

cd /var/lib/mysql/해당db/ 로 들어가서 보면,
-rw-r--r-- 1 mysql mysql 1477599896 3월 4 2014 table_name.MYD -rw-r--r-- 1 mysql mysql 39196672 3월 4 2014 table_name.MYI -rw-r--r-- 1 mysql mysql 15389 3월 4 2014 table_name.frm
아마 테이블 권한이 위와 같이 644로 되어 있을 가능성이 높다. 그럼 해당 권한을
chmod 660 table_name.MYD 명령어로 3개 다 바꿔 준다.
하지만 chmod로 바꿀때의 접속 아이디로 소유자도 변경 되어서,
-rw-rw---- 1 root root 1477599896 3월 4 2014 table_name.MYD -rw-rw---- 1 root root 39196672 3월 4 2014 table_name.MYI -rw-rw---- 1 root root 15389 3월 4 2014 table_name.frm
처럼 되어 있을 것이다.
그래서 chown mysql:mysql table_name.MYD 명령어로 3개의 파일을 전부 바꿔준 뒤에

mysql을 재시작 해보면 된다.