2017-12-03 3 views
1

제게 인내심을주십시오 -이 질문에서 올바른 용어를 사용하려고합니다. 나는 사용자가 몇 년 동안 자신의 핵심 데이터 백업 .sqlite 데이터베이스의 백업을 만들 수있게 해주는 아이폰 OS 응용 프로그램을 가지고 있습니다. 어떤 이유로, 돌아 오는 길에 journal_mode에 대한 pragma 옵션을 "MEMORY"로 설정했는데, 이는 지난 수년 동안 이루어진 백업 각각에 WAL 또는 SHM 파일이 없음을 의미합니다. 모든 데이터베이스 코드를 다시 작성하고 있으며 iOS의 현재 기본 journal_mode는 "WAL"입니다. journal_mode "MEMORY"로 만든 백업을 가져올 때 어떻게 든 WAL 모드에서 작동하는 파일로 끝내고 싶습니다. (WAL 모드에서 모든 새 백업을 동일하게 만들려고합니다.) 그러나이 경우 심지어 가능합니다. WAL 또는 SHM 파일이없는 단일 .sqlite 파일을 강제로 생성 할 수 있습니까? 백업을 만들고 데이터를 복원하기 위해 NSPersistentStore 메서드를 사용하려고합니다. 프로세스 전체에서 사용되는 옵션 (예 : journal_mode)이 일관성을 유지할 필요가 있다는 것을 읽은 것을 기억합니다 (찾을 수 있으면이 링크를 게시합니다).). 저는 WAL 파일이 없기 때문에 가져 오기에 "MEMORY"또는 "DELETE"journal_mode를 사용해야한다고 생각합니다. 그러나 이것이 파일이 WAL 파일없이 영원히 기능해야하는지, 아니면 WAL 모드에서 작동하도록 할 수있는 것이 있는지는 확실하지 않습니다. 이것이 약간의 의미를 갖기를 바랍니다. 이것은 다소 혼란 스럽지만,이 문제에 접근하는 방법에 대한 어떤 생각이라도 고맙게 생각합니다.WAL 파일없이 핵심 데이터 .sqlite 백업을 복원하여 WAL 모드에서 작동 할 수 있습니까?

답변

2

독점 액세스 권한이있는 한 언제든지 데이터베이스의 저널 모드를 변경할 수 있습니다. 그냥 열어서 PRAGMA을 실행하십시오. 사실 이것은 WAL 모드를 활성화하는 유일한 방법입니다.

WAL 모드 만 데이터베이스 파일에 지속적으로 저장됩니다. 다른 저널 모드는 연결 속성입니다. 파일이 아닌 WAL이 열리면 기본적으로 DELETE 모드에 있습니다.

+0

굉장합니다. 고맙습니다. – SAHM

관련 문제