SQLite 데이터베이스가 손상되는 응용 프로그램에 문제가 있습니다. 이전에는 이상한 경우가 있었지만 iOS 7.1 출시 이후에는 훨씬 더 일반적인 것으로 보입니다.SQLite "데이터베이스 디스크 이미지 형식이 잘못되었습니다."
나는 당신이 여기에서 찾을 수 있습니다 마테오 Bertozzi에 의한 SQLite는 래퍼 사용하고 있습니다 : 데이터베이스가 손상됩니다 https://github.com/ConnorD/simple-sqlite
및 database disk image is malformed
은, 일부 쿼리를 실행할 수있는 오류를 뱉어을하지만, 기존 데이터는 엉망이됩니다 .
나는 높거나 낮게 검색하여 해결책을 찾을 수 없다. 나는 여기에 누군가가 아이디어를 갖고 있기를 바란다. iOS 업데이트 이후에 더 일반적인 문제가되고 있기 때문이다.
[sqlite executeNonQuery:@"pragma integrity_check"];
[sqlite executeNonQuery:@"reindex nodes"];
[sqlite executeNonQuery:@"reindex pristine"];
그리고 출력했다 :
나는이 복구 명령을 시도했습니다Core Data and iOS 7: Different behavior of persistent store iOS7에 후 SQLite는 문제를 언급 : 나는이 문제를 발견 몇 가지 더 파고으로
SQLite Step Failed: database disk image is malformed
SQLite Prepare Failed: unable to identify the object to be reindexed
- Query: reindex nodes
SQLite Prepare Failed: unable to identify the object to be reindexed
- Query: reindex pristine`
.
NSPersistentStore
을 사용하는 방법을 모르겠으므로 [sqlite executeNonQuery:@"pragma journal_mode = DELETE"];
을 실행 해 보았습니다. 그냥 SQLite Step Failed: unknown error
이라고 말했습니다.
다른 사람이이 문제가 발생하거나 올바른 방향으로 나를 가리키고 있습니까?
그동안 나는 NSPersistentStore
이 내가해야 할 일이라고 생각합니다. 그걸 조사해야합니다.
편집 : 내가 발견 한 것을 데이터베이스 내 정기적 인 업데이트하지 않을 경우에만 NSPersistentStore
를 사용
에서. 여기
내가 데이터베이스를 열 방법은 다음과 같습니다
sqlite = [[Sqlite alloc] init];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"HomeOpenDatabase8.sql"];
if (![sqlite open:writableDBPath]) {
NSLog(@"DB Not Writable");
return;
} else {
NSLog(@"All good");
}
그래서 내가
pragma journal_mode = DELETE
이 방법을 설정하는 방법을 찾을 필요가 가정을 ..?
편집 2 :
나는 그것이 내가 Core Data
를 사용하지 않는로 journal_mode
함께 할 수있어 확신 아니에요 - 드로잉 보드에 다시.
나에게 가장 큰 플래그는 iOs 7.1이 출시 된 직후에이 오류가 나타나기 시작했음을 말합니다. 확실히 우연 일 수는 없습니다. 내 장치에서 문제를 계속해서 복제하려고합니다.
손상을 확실하게 재현하기 위해 수행 할 수있는 특정 단계가 있습니까? – borrrden
나는 그것을 계속해서 반복 할 수 없었다. 나는 계속 노력할 것이지만, 엄청난 고통이다. "core_data"를 사용하지 않아서 journal_mode라고 더 이상 확신하지 않으므로 사각형으로 돌아갑니다. – Batnom
왜 당신은 pragmas를 전혀 쓰고 있습니까? – borrrden