안녕하세요 오늘은 제가 개발을 하려고 XAMPP를 켜는데 아래의 에러가 떴습니다.
이 에러는 가끔 뜰 때가 있는데 이 에러를 고치는 방법은 data파일을 복사 후 data_old같이 하나 더 만들어 주신다음
backup폴더의 파일을 data폴더의 내용을 지우고 그대로 넣어주면 초기화된 XAMPP MYSQL이 됩니다.
data_old폴더에서 원하는 데이터베이스의 폴더와 ib로 시작하는 파일들도 같이 data파일에 복사 붙여넣기를 해줍니다
그럼 에러도 사라지고! 데이터 및 테이블도 그대로 남아있습니다!
하지만 저의 경우 data폴더의 ibdata1을 복붙해도 xampp mysql table doesn't exist in engine 1932 에러가 나면서
데이터가 사라졌었습니다.
빨리 개발해야 하는데 테이블 데이터 및 컬럼 정보까지 다 없어져서 정말 난감했습니다.
그래서 해당 에러를 어떻게 고칠지 GPT와 인터넷을 검색해봤지만 대부분이 LINUX환경이더라고요
저는 테이블의 frm파일과 ibd파일이 남아있었고 일단 frm 파일로 table 정보라도 찾아봐야겠다 생각했었습니다.
해당 frm을 sql로 변환해주는 사이트가 5년전쯤에 있었는데 현재는 없는거 같아서 정말 어떻게 해야하지 하던 와중에
dbsake라는 것을 보았습니다.
window환경에서 python, dbsake 설치후 dbsake를 작동하면 frm이 sql로 나온다고 하더라고요
하지만 사용법을 찾아보던중 window에서는 사용할 수 없는 dbsake의 기능이 있더라고요
그래서 WSL을 설치 후 그 안에 다시 python과 dbsake를 설치 한 다음 명령어와 frm파일의 경로를 넣어주니
table create sql이 딱 나왔습니다.
정말 4시간 만에 table 정보를 복구할 수 있었습니다.
하지만 ibd로 table 데이터 정보까지 복구해야 하기 때문에 또 열심히 검색을 하였습니다.
table을 frm으로 복구한 sql로 구성한 다음에 table을 ALTER TABLE 테이블명 DISCARD TABLESPACE;
하고 xampp/mysql/data/원하는 데이터베이스 폴더에 ibd를 넣어준 뒤 다시 ALTER TABLE 테이블명 IMPORT TABLESPACE;
하니 테이블 데이터가 정상적으로 돌아왔습니다ㅠㅠ;
총 5시간만에 데이터를 복구하는 방법을 깨달았습니다.
'개발 > 웹개발' 카테고리의 다른 글
전국대회 우수상 결과물을 PHP로 만들어보자.. (0) | 2024.09.01 |
---|---|
JS, CSS를 사용하여 지도 안에서 선을 제어해보자. (0) | 2024.09.01 |
중학생 진로체험 웹 서비스를 React로 해보자. (0) | 2024.04.20 |
학생들의 야자시간 위치를 JSP로 저장하자. (0) | 2024.04.20 |
요리사가 되고 싶어서 PHP로 만개의 레시피를 만들어보자. (1) | 2024.04.20 |