Blog
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가 있다.
다시 한번 당부의 말씀을 드리자면 꼭 테스트 장비에서 테스트 해 보신 후 실 서비스에 반영해 주시기 바랍니다.
위 내용과 관련해서 질문이 있으시면 댓글 달아 주시면 확인 가능한 부분까지 설명해 드리도록 하겠습니다.
감사합니다.
- [2019/10/20] 묻고답하기 소셜xe 오류이후 관리자 로그인 기능이 사라졌습니다.
- [2019/09/11] 묻고답하기 카카오톡 공유 에러 문의드립니다.
- [2019/07/26] 묻고답하기 XE 초보 오류 도움을 요청합니다.. *1
- [2018/10/10] 묻고답하기 부탁드립니다 초보가 급히 부탁드립니니다 *2
- [2017/08/31] 묻고답하기 웹페이지 오류관련하여 질문 드립니다ㅠㅠ *4