본문 바로가기
컴퓨터

👨‍💻 [SQLite] SQLite Error Code 11 이 발생했는데, DB 파일을 복원할 수 있는 방법은 어떻게 되나요?

by 밝음의기둥 2024. 10. 8.
반응형

👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

프로그램에서 로컬 DB로 SQLite를 사용하고 있는데, DB 파일이 열리지가 않고, Error Code 11 이 표시가 됩니다. 그래서, 해결 방법이 있는지 물어보았습니다.

명령어를 통해서 복구를 시도해봤지만, 복불복인 것 같습니다. 어떤 파일은 잘 되는가 하면, 어떤 파일은 전혀 적용할 수 없는 상태여서요. 아마도 문제되는 위치가 DB 파일의 어느 부분이냐에 따라서 달라지는 것 같습니다.


질문 >

SQLite Error Code 11 이 발생했는데, DB 파일을 복원할 수 있는 방법은 어떻게 되나요?

답변 >

SQLite 오류 코드 11은 "database disk image is malformed"라는 메시지와 관련된 오류입니다. 이 오류는 주로 SQLite 데이터베이스 파일이 손상되었을 때 발생합니다. 데이터베이스 파일을 복원하는 데에는 몇 가지 방법이 있습니다. 아래 절차를 따라 복구를 시도해 보세요.

1. 백업을 사용하여 복구

가장 간단하고 안전한 방법은 데이터베이스의 백업 파일을 사용하는 것입니다. 백업이 있다면, 백업 파일로 복구할 수 있습니다.

2. sqlite3 명령어로 복구 시도

SQLite CLI를 사용하여 일부 데이터를 복구할 수 있습니다. 다음 단계로 시도해 볼 수 있습니다.

1. 새로 복구할 데이터베이스 파일 만들기

우선, 현재 손상된 데이터베이스 파일로부터 가능한 데이터를 추출한 후 새로운 데이터베이스로 옮기는 작업을 시도합니다.

sqlite3 손상된_파일.db
sqlite> .mode insert
sqlite> .output backup.sql
sqlite> .dump
sqlite> .exit

이렇게 하면, 손상된 데이터베이스로부터 데이터를 추출하여 SQL 스크립트 파일(예: backup.sql)로 저장할 수 있습니다. 이 SQL 파일을 새 데이터베이스로 복원할 수 있습니다.

2. 새 데이터베이스로 데이터 복원하기

이제 새 데이터베이스를 만들고, SQL 파일을 사용하여 데이터를 복원합니다.

sqlite3 새_데이터베이스.db
sqlite> .read backup.sql
sqlite> .exit

3. PRAGMA 명령어로 검사 및 복구

SQLite는 PRAGMA 명령어를 사용하여 데이터베이스를 검사하거나 문제를 해결하는 데 도움을 줄 수 있습니다.

sqlite3 손상된_파일.db
sqlite> PRAGMA integrity_check;

이 명령어는 데이터베이스 무결성을 확인하고 문제를 보고합니다. 문제가 있으면, PRAGMA 명령어를 통해 수정할 수 있는 경우도 있습니다.

4. SQLite 데이터 복구 도구 사용

위 방법들로도 복구가 불가능하다면, SQLite 데이터베이스 복구를 위한 전문적인 도구를 사용할 수도 있습니다. 예를 들면:

  • SQLite Database Recovery Tool: 손상된 데이터베이스를 복구해주는 상용 프로그램입니다.
  • DB Browser for SQLite: SQLite 파일을 편집하고 데이터를 복원하는 데 사용할 수 있습니다.

5. 손상된 파일 복구가 불가능한 경우

만약 데이터베이스가 너무 심각하게 손상되어 복구가 불가능한 경우, 백업 외에 데이터베이스를 복구할 방법이 제한될 수 있습니다. 이럴 때는 백업 및 로그 파일을 사용한 복원이 가장 확실한 방법입니다.

데이터베이스 복구 후의 예방 조치

데이터 손상 방지를 위해 주기적으로 백업을 유지하고, SQLite의 WAL (Write-Ahead Logging) 모드를 사용하는 것이 좋습니다. WAL 모드는 데이터베이스를 더 안정적으로 관리하는 데 도움이 될 수 있습니다.

이 절차들이 도움이 되기를 바라며, 문제가 계속된다면 데이터베이스 구조에 대한 추가적인 정보나 로그를 함께 확인하는 것도 필요할 수 있습니다.


"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리 입니다. 📢 위로그@WiLog 는 자기주도학습을 목적으로 라이브 스트리밍을 합니다. 📢 1인 게임 개발을 목표로 Unreal과 Blender를 학습 중입니

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형