Document Module 업데이트 후 알수 없는 오류에 대한 해결 방법
2011.12.20 18:31
안녕하세요.
XE 개발팀입니다.
일전에 공지를 통해 1.5 업데이트 후 발생하는 오류에 대해 몇 가지 설명을 드린 적이 있습니다.
그중 2번 "document모듈 업데이트 후 알 수 없는 error가 발생합니다."와 관련되어서 웹을 통해 수정 프로그램을 만들어 배포하려 하였지만, admin을 통해 업데이트 하는 것과 크게 다르지 않아 직접 수정할 수 있는 방법을 알려 드립니다.
자신이 사용하는 DB 관리 툴(phpMyAdmin, console, MySQL Query Browser 등)을 이용하여 아래 내용을 확인해 보시고 적용하시면 됩니다. DB 내용이 많을 경우 웹 어드민 등 툴을 이용하기 보다는 mysql 콘솔을 이용하시길 권장해 드립니다.
아래 내용은 MySQL 기준으로 설명 드립니다.
단 아래 내용은 DB의 구조를 변경하는 작업이므로 테스트 DB에서 테스트를 해 본 후 작업하셔야 합니다.
또한 documents table의 내용이 많을 경우 시간이 오래 걸릴 수 있습니다.
구조 변경 작업이 완료되지 않은 상태로 중지를 시킬 경우 문제가 발생할 수 있으니 구조변경 완료시까지 다른 작업을 삼가해 주시기 바랍니다.
또한 Source가 1.5 버젼이 아닌 상태에서 아래 내용을 적용하시면 문제가 발생합니다. 꼭 자신의 Core 버젼을 확인해 주시기 바랍니다.
1. documents 테이블의 구조를 확인한다.
XE 설치 시 prefix를 'xe'로 설정했다면 documents Table은 xe_documents로 만들어 져 있을 것입니다.
phpMyAdmin이라면 '구조'탭을, console이라면 'desc xe_documents' 라고 치시면 됩니다.
documents Table중에 다음과 같은 사항을 확인합니다.
다음의 사항중에 하나라도 해당된다면 1.5로 업데이트 시 오류가 발생한 경우입니다.
- status column이 없다
- is_secret column이 남아 있다.
- allow_comment column이 남아 있다.
- lock_comment column이 남아 있다.
- comment_status column이 없다.
- key 또는 index명에 idx_module_status 라는 이름의 index가 없다.
2. documents 테이블에 status라는 column이 있는지 확인한다.
status column이 없으면 다음과 같은 쿼리를 실행해 주면 됩니다.
phpMyAdmin이라면 'SQL' 탭에서, 콘솔이라면 콘솔에서 직접 해 주면 됩니다.
ALTER TABLE xe_documents ADD COLUMN `status` VARCHAR(20) DEFAULT 'PUBLIC';
3. 기존 비밀글 컬럼을 status로 옮겨 줍니다.
2번이 성공적으로 끝나서 status column이 잘 생성 되었고 아직 is_secret라는 column이 남아 있는 경우라면
is_secret의 내용을 status로 옮겨 줍니다.
2번과 마찬가지로 아래의 쿼리를 실행해 주면 됩니다.
UPDATE xe_documents SET status='SECRET' WHERE is_secret='Y';
4. is_secret column을 삭제 합니다.
3번까지 잘 완료 되었다면 is_secret column을 삭제합니다.
다음과 같은 쿼리를 실행하면 됩니다.
ALTER TABLE xe_documents DROP COLUMN `is_secret`;
5. comment_status column을 추가 합니다.
comment_status column이 없다면 다음과 같은 쿼리를 실행해서 추가 합니다.
ALTER TABLE xe_documents ADD COLUMN `comment_status` VARCHAR(20) DEFAULT 'ALLOW';
6. comment_status의 값을 업데이트 합니다.
allow_comment column과 lock_comment column에 있던 내용을 이용하여
comment_status의 값을 업데이트 해야 합니다.
다음과 같은 쿼리를 실행하면 됩니다.
UPDATE xe_documents SET comment_status='DENY' WHERE allow_comment='Y' AND lock_comment='Y';
UPDATE xe_documents SET comment_status='DENY' WHERE allow_comment='N' AND lock_comment='Y';
UPDATE xe_documents SET comment_status='DENY' WHERE allow_comment='N' AND lock_comment='N';
7. allow_comment column과 lock_comment column을 삭제 합니다.
6번을 성공적으로 마쳤다면 아래와 같은 쿼리를 통해 이제 필요 없어진 allow_comment column과 lock_comment column을 삭제 합니다.
ALTER TABLE xe_documents DROP COLUMN `allow_comment`;
ALTER TABLE xe_documents DROP COLUMN `lock_comment`;
8. 마지막으로 status 관련 index를 추가 합니다.
idx_module_status 라는 이름의 key 또는 index가 없다면 다음과 같은 쿼리를 실행시켜 줍니다.
ALTER TABLE `xe_documents` ADD INDEX `idx_module_status` (module_srl, status);
9. 마지막 확인 작업
1번에서 확인했던 것과 마찬가지로 다음과 같은 상태가 되었는지 확인을 합니다.
다음의 조건을 모두 만족 시키면 올바르게 구조가 변경된 것입니다.
- status column이 있다.
- is_secret column이 없다.
- allow_comment column이 없다.
- lock_comment column이 없다.
- comment_status column이 있다.
- key 또는 index명에 idx_module_status 라는 이름의 index가 있다.
다시 한번 당부의 말씀을 드리자면 꼭 테스트 장비에서 테스트 해 보신 후 실 서비스에 반영해 주시기 바랍니다.
위 내용과 관련해서 질문이 있으시면 댓글 달아 주시면 확인 가능한 부분까지 설명해 드리도록 하겠습니다.
감사합니다.
댓글 15
-
지나가다가
2011.12.20 20:58
어디 무서워서 업데이트 하것습니까? -
라르게덴
2011.12.20 21:20
공지사항의 방법을 툴로 제작하였습니다. http://www.xpressengine.com/index.php?mid=download&package_srl=20351581 덧 : 지나가다가님 무서워하지마세요 ^^ -
php,cgi어렵네
2011.12.22 19:17
수고하셨습니다^^ -
착한악마
2011.12.20 21:50
아이고 머리가 무겁네요..아이쿠... 역시 개발팀 보다 라르게덴 님이 한수위이십니다.. 일반사람들이 위 내용을 어떻게 하라고 저렇게 어렵게 주저리 주러리 너무도 친절하게 만들었을까요... 그냥 라르게덴님처럼 이렇게 만들어주시면 편하고 사람들이 어려워 하지않을텐데요.. 좀더 다가오는 친절한 개발팀이 되면 좋겠네요...^^ -
라르게덴
2011.12.20 21:54
개발팀의 입장도 이해해주셔야 합니다. 개발팀에서 만드는 것들은 모두 '공식'이라는 타이틀이 붙기 때문에 자칫 문제가 발생될 경우 책임이 커집니다. 하지만 저 같은 개인이 제작한 툴로 인해 문제가 생길 경우 저는 도망가면 되거든요. =ㅅ=.... 누가 좋다 아쉽다보다는 우선 한숨돌리신다는게 중요한거 같습니다. -
착한악마
2011.12.21 10:38
^^ 라르게덴 님이....무거짐을....하하하하.. 뭐 개발팀을 이해 못하는것은 아닙니다. 저런 설명만으로도 감사하죠. 하지만 좀더 친절한 행동이 필요하다는것이죠..^^ 하여튼 부정적인 말은 아니니..오해는 안했으면 하네요..^^ 친절!!!친절..한 라르게덴..님......... -
난다날아
2011.12.21 15:00
변명을 하자면 관리자 페이지에서 모듈 업데이트를 눌렀을 때 업데이트가 제대로 수행되지 않았다면 어떤 방식이라도 웹 상에서 PHP 코드를 통하는 방법으로 시도 때 제대로 되지 않을 확률이 크다는 생각으로 아예 콘솔에서 그대로 명령어를 복사해서 넣으면 되도록 방법을 차례대로 알려드리자라는 생각으로 이 공지가 작성되었습니다. 저희가 불친절하여 이런 글을 올린 것은 아니니 이해해주세요~ -
사랑천사
2011.12.21 00:13
불란성 댓글이 될까 두렵습니다만, 저 위에 지나가다가 님의 말씀은 그냥 비꼬시는 거 같습니다만. 소프트웨어에 문제가 있다는 거, 분명 문제일 수 있습니다만, 소프트웨어도 사람이 만드는 겁니다. 항상 완벽할 수도 없고 문제가 있다는 거 아니까 수정하기 위한 방법도 내 놓은 거 아닙니까? 자신의 입장에서만 모든걸 바라보고 말하는 분들이 종종 계시는 거 같은데 그렇게 한다고 해서 진짜 무슨 문제가 해결 되는 것도 아니고. 불란만 일어나는 거 아닐까요? 뭐 이렇게 댓글 하나 올리는 저도 불란성 댓글을 쓰고 있다는 느낌을 스스로 강하게 받고 있습니다만... -
윤디
2011.12.21 08:04
저는 딴것보다 천사님 말씀중에 '...다만' 이 참 많다 느껴집니다만. >>>() -
사랑천사
2011.12.21 11:39
불퀘하셨다면 죄송합니다. 컴퓨터를 혼자 독학으로 공부하고 그걸로 직업을 가지게 됀 입장에서 개발자 분들의 편을 좀 들고 싶었습니다. 사실 제품도 중요하지만, 그 과정에서 나오는 실패의 과정이나 노력 같은건 하나도 신경 안 쓰고 결과만 가지고 자기 생각 꼴리는 데로만 말하고 시비 거는 사람들을 많이 봐 와서 써 본 댓글이었습니다. 그렇지 않으신 분들이야 기분 상하실 거 없다고 생각됩니다. 제가 무례한 부분이 있었다면 죄송하지만요. -
초보유저
2011.12.21 14:22
솔직히 제로보드4에서 xe로 넘어오면서 많은 이유도있겠지만 일반유저들이 더 편하게 홈페이지를 만들고 사용하고자 하는 취지도 있었다고 생각됩니다. 하지만 요즘은 저같은 초보 일반 유저들이 이해가기 힘든 말들이 많이지고 있다는 생각입니다. 물론 저 자신이 더 공부를 해고 노력해야 하는데 그러지 못한점도 있다고 반성합니다. xe 1.5로 넘어오면서 db 어찌고 뭐고 해서 사실 업데이트 엄두를 못내고있는 일인입니다. 항상 수고해주시는 분들에게 감사드립니다. 조금만더 초보 일반 유저들을 생각해 주셨으면 한느생각입니다. -
대나인
2011.12.22 00:00
수고하시는것은 알지만 최근들어 뭔가 소홀하고, 점점 산으로 가고 있다는 생각이 드는건 죄송하지만.. 사실입니다.. -
php,cgi어렵네
2011.12.22 19:15
대기업이 꼭 잘하는것 만은 아닌것 같습니다. 대기업=네이버, 개인=ZB김영수님. 과거 김영수님만의 제로보드 일때는 요즘처럼 유저들의 불만이 있거나 한적은 없었지요. 네이버에서 제로보드를 인수(?) 하고 자꾸만 이상해져갑니다. 유저들이 만든 각종 스킨들이 쏟아져야 할텐데, 그러질 못합니다. 툭하면 업데이트를 하는데, 그 업데이트가 호환이 잘 되질 않으니..... 죄송스러운 말씀입니다만, 이 추세로 간다면 몇년 안가서 유저들 다 떨어져 나가버리고 그저 네이버만의 제로보드가 될것입니다. 뭐 네이버 입장에서야 제로보드가(XE) 영리사업이 아닌 비영리 사업이지만, 이걸로 인해 파생되는 금전적 이익이 나면 그만이겠지만..... 딴지 거는게 아니라, 인생 살 만큼 살아보고 다양한 삶의 경험과 사업도 해보고한 경험에서 하는 충고이니 이해하시길 바랍니다. 부디 예전의 제로보드 명성을 되찾길 바랍니다... 저는 아직도 1.4.5.10 버전 사용중이네요....ㅎㅎ -
양파onion
2011.12.25 17:53
Error SQL query: Edit Edit SHOW FULL FIELDS FROM `xe_documents` ; MySQL said: Documentation #145 - Table '.\test\xe_documents' is marked as crashed and should be repaired 이라고 나오는데요. 어떻게 해야하나요? 디비 날린건가요? 위에 방법대로 하고싶어도 할수가 없습니다. -
아가늑대
2011.12.26 21:35
일반 웹 호스팅 업체를 이용하셔서 제로보드를 사용하고 계시다면, 필히 업체에 백업 요청을 하셔서 백업본을 가지고 계신 후 작업하시기 바랍니다. 대부분의 호스팅 업체들은 백업을 하고 있겠지만, 혹시 모를 사태를 대비하여 꼭~! 필히~! 백업을 하고 작업하시기 바랍니다. DB 및 파일에 대한 전체 백업을 요청하셔서 복원 시 원래 사이트가 정상적으로 작동될 수 있는 자료를 가지고 계신 후 작업하시는 것이 안전합니다.