2006/01/27 22:18
테터툴즈 1.0 RC2 마이그레이션 문제 해결 방안.
낮에 시도했던 테터툴즈 마이그레이션에 실패하고 백업으로 되돌린 다음, 저녁때 어째서 실패했을지를 알아보기로 했습니다. 가능하면 소스를 열어서 확인하지는 않으리라고 생각했었지만, 조금 아쉬운 느낌이어서 원인이라도 알아보자는 기분으로 소스를 조금 확인해 보기로 했습니다. 일단은 테터툴즈 버그 트랙에 날릴 작정이니 조금이나마 도움이 되었으면 좋겠습니다. 일단 이 방법은 '마이그레이션 메세지가 나타나지 않아 테터툴즈 DB를 백업했다가 복구하는 경우'를 해결할 수 있습니다.
많은 사용자들이 테이블 식별자를 맞게 입력했음에도 마이그레이션 메세지가 나타나지 않는 원인은 테터툴즈 1.0 셋업이 기존 버전의 테이블을 확인하는 코드에 예외상황이 있었기 때문입니다. 테터툴즈 1.0 셋업에서는 기존 버전의 테이블 확인을 위해 'DESCRIBE [table]'한 결과를 문자열로 주욱 붙인 다음 md5() 한 결과를 이용해 기존 버전의 테이블 구조의 무결성을 확인하고 있습니다. 여기서 테이블 구조에 수정이 가해졌거나 한 경우라면 테이블의 해시값 - md5 - 이 달라서 마이그레이션 되지 않습니다. 그래서 정상적인 경우 해시코드가 'c00a... 가 되어야 하는데, 제 경우에는 데이터베이스에 별다른 수정을 가하지 않았음에도 기존 버전의 테이블 해시가 '1760...'으로 나타났습니다. 그래서 마이그레이션의 대상이 되지 않았더군요.
이 이상 확인해보지는 않았지만, 데이터베이스를 건드리지 않은 것이 확실한 테이블 구성의 해시코드를 수집해 코드에 추가하거나, 테이블과 테이블 구조를 직접 확인하는 방법으로 테이블 구조 무결성 확인 코드가 변경되어야 하지 않을까 싶습니다. 일단, '어쨌든 테터툴즈 1.0 RC2로 마이그레이션 하고 싶다!'는 경우에는 루트 디렉토리의 index.php의 1662번째 라인의 'c00a...'로 시작하는 문자열을 다음에 첨부한 파일을 계정에 넣고 돌렸을 때 나타나는 해시코드로 수정하면 마이그레이션이 가능해집니다. 단, 확실하게 기존 테이블에 수정을 가한 적이 없어야 하고, 기존 버전이 확실히 '테터툴즈 클래식 RC3'여야 합니다.
dbtest.php
테터앤 컴퍼니 개발자님들도 새해 복 많이 받으시고, 테스트에 참여하시는 분들도 새해 복 많이 받으시길 바랍니다. :)
많은 사용자들이 테이블 식별자를 맞게 입력했음에도 마이그레이션 메세지가 나타나지 않는 원인은 테터툴즈 1.0 셋업이 기존 버전의 테이블을 확인하는 코드에 예외상황이 있었기 때문입니다. 테터툴즈 1.0 셋업에서는 기존 버전의 테이블 확인을 위해 'DESCRIBE [table]'한 결과를 문자열로 주욱 붙인 다음 md5() 한 결과를 이용해 기존 버전의 테이블 구조의 무결성을 확인하고 있습니다. 여기서 테이블 구조에 수정이 가해졌거나 한 경우라면 테이블의 해시값 - md5 - 이 달라서 마이그레이션 되지 않습니다. 그래서 정상적인 경우 해시코드가 'c00a... 가 되어야 하는데, 제 경우에는 데이터베이스에 별다른 수정을 가하지 않았음에도 기존 버전의 테이블 해시가 '1760...'으로 나타났습니다. 그래서 마이그레이션의 대상이 되지 않았더군요.

테이블 무결성 확인 코드에 예외상황이 있습니다.
dbtest.php기존 테이블 해시코드 확인.
