2011-03-24 1 views
3

매우 큰 핵심 데이터 데이터베이스가있는 앱이 있습니다. 지난 한 해 동안 여러 번 버전을 변경했습니다.핵심 데이터 마이그레이션 백 아웃?

데이터베이스를 마지막으로 업데이트 한 시점에서 엔티티에 대한 간단한 변경을 한 번 수행했습니다. 새 선택적 특성을 추가했습니다. 어떤 이유로 Lightweight Migration을 사용하여 마이그레이션하지 않습니다. 나는 나중에 이것이 다른 버전 관리에서 다시 필요했던 '식별자 이름 바꾸기'로 인한 Apple의 경량 마이그레이션 코드의 버그로 인한 것임을 알게되었습니다.

어쨌든, 나는 때문에 경량 마이그레이션을 사용하여에서 저를 유지 버그의

, 나는이 훨씬 더 무거운 과정이었다 것이라는 점을 이해하지 못하는, 마이그레이션에 도움 매핑 파일을 생성 ... 빗나가 마이그레이션을 수행하는 동안 앱이 전체 데이터베이스를 메모리에로드하는 동안 사용자가 기다리게합니다. 이것은 대용량 데이터베이스의 경우 전혀 옵션이 아니며 많은 사용자가 메모리 문제 등으로 인해 데이터베이스를 전혀 마이그레이션 할 수 없음을 알게되었습니다.

이제 내 앱을 다시 릴리스하고 싶습니다. 이 문제를 해결하십시오. 문제는 내 사용자 중 일부가 '마이그레이션 중간에'표시되는 데이터베이스가 있다는 것입니다. 매핑 파일을 제거하고 경량 마이그레이션을 지원하는 새 코드를 사용하더라도 '마이그레이션 중간에'이 상태에있는 사용자는 재설정되지 않는 것처럼 보입니다.

마이 그 레이션을 철회 할 수있는 방법은 무엇입니까? - Documents 디렉터리에 '.myDB.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3'파일이 있기 때문에이 상태임을 알 수 있습니다. 이 파일을 삭제해도 마이그레이션이 지워지지는 않습니다. 내 생각 엔 데이터베이스가 어떻게 든이 상태에있는 것으로 플래그가 지정되거나 이미 부분적으로 마이그레이션 된 것입니다. -이 상태를 감지하고 데이터베이스를 모두 삭제할 수 있습니다. 그러나 이로 인해 사용자는 데이터를 다시 다운로드해야합니다.

의견이 있으십니까?

도움 주셔서 감사합니다.

+0

방금 ​​말씀 드리 자면, 나는 당신이 아닙니다. – TechZen

답변

0

나에게 일어나는 유일한 일은 영향을받는 파일의 SQL 저장소를 열어 일시적 상태에있는 db에 신호를 보낼 수있는 플래그 또는 다른 것을 찾는다는 것입니다. 파일에 직접 쓸 수 있고 뭔가 바꿀 수도 있습니다.

정말 추악한 문제입니다.