앱 스토어 (버전 1.0)에 앱을 업로드했습니다. 내 응용 프로그램은 일부 데이터를 저장하기 위해 sqlite 데이터베이스를 사용하고 있습니다. 이제 데이터베이스에서 몇 가지 사항을 변경했습니다 (필자는 데이터베이스에있는 테이블 중 하나에 2 또는 3 개의 새 열을 추가했습니다). 새로운 버전 1.1 (다른 db 구조를 가짐)로 이전 버전의 앱을 업데이트하고 싶습니다. 자, 이미 버전 1.0을 사용하는 사용자가 앱을 버전 1.1로 업그레이드하면 db는 이미 앱 샌드 박스에 있으며 따라서 앱은 버전 1.1을 가리키고 있지만 db는 여전히 이전 버전입니다. 이전 데이터가있는 경우 새 db를 갖고 싶습니다. 제발 도와주세요. 감사.새로운 버전을 다른 sqlite db 구조로 앱 스토어로 업데이트
답변
sqlite는 user_version 속성으로 지원되는 항목을 지원하므로 PRAGMA user_version
을 실행하여 응용 프로그램 db의 현재 스키마 버전을 쿼리 할 수 있습니다. 이 쿼리는 앱이 시작될 때 처음에 작성 될 수 있습니다.
이 user_version을 업데이트하려면 다음과 같은 업데이트 쿼리 PRAGMA user_version = version_num
을 실행하십시오.
sqlite db를 만들 때마다이 속성 user_version을 넣는 것이 가장 좋습니다. 따라서 나중에 업그레이드 할 때 현재 값을 쿼리 할 수 있습니다. 스키마 버전을 업그레이드하기 위해 필요한 것이 무엇인지 확인하고 나머지 변경 또는 테이블 작성을 실행하십시오.
예를 들어: 첫 번째 릴리스에서
내가 COL1과 표를 작성, COL2
나는 표를 작성하는 SQL을 실행하고이 성공적으로 완료되면, 난 = 1. 그래서이 표시됩니다 프라 그마 user_version을 실행 내 현재 스키마 버전은 내가, 2
내가 첫 번째 쿼리의 user_version 내 스키마 버전을 변경할 필요가 값의 확인은 1 인 경우, 당신은 변경 실행해야 내가 새로운 COL3를 추가 릴리스에서 1
입니다 추가 할 스크립트 새 열 및 사용자 버전을 2로 설정하십시오.
이전에 user_version을 설정하지 않았으므로 새 설치 대 업그레이드 시나리오를 구별하는 것이 어려울 수 있습니다. 그래서 지금은 db가 존재한다고 가정 할 수 있습니다. 업그레이드 시나리오이고 alter script를 실행하고 존재하지 않는다면 새로운 설치 시나리오를 가정하고 create script를 실행하십시오. 그러나 위에서 언급 한 pragma를 사용하여 향후 문제를 해결할 수 있는지 확인하십시오.
은 데이터베이스 스키마를 업데이트하고 유지 관리하는 좋은 방법 인 것 같습니다. 나는 이것을 시도하지 않을 것입니다. –
이전 DB 인 경우 시작을 확인할 수 있으며 새 구조체 (임시 이름 포함)로 새 DB를 만드는 루틴이 있으면 이전 데이터에서 새 데이터로 모두 복사 한 다음 닫습니다. 이전 db & 삭제하고 새 db를 닫은 다음 이름을 바꾼 다음 마지막으로 다시 열어서 업데이트 된 응용 프로그램을 사용하십시오. 쉽고 빠르며 & 당신은 SQLite에 대한 심층적 인 지식이 필요하지 않습니다.
- 1. 는 OS X 버전을 업데이트하는 앱 스토어로 사용자를 보내기
- 2. 안드로이드 앱 업데이트시 SQLite 업데이트
- 3. PDO로 새로운 SQLite DB 생성하기
- 4. SQLite 데이터베이스를 트리플 스토어로 변환
- 5. 바이너리를 앱 스토어로 업로드하는 중
- 6. 새로운 iOS 앱을 만들었습니다. 이전 버전을 업데이트 할 수 없습니다. Apple은 사용자에게 새로운 것을 다운로드하라는 업데이트 만 허용합니까?
- 7. 앱 버전을 업그레이드하면 새로운 Flurry 분석 앱 ID를 만들어야하나요?
- 8. iPhone 앱 - 포크를하거나 새로운 버전을 만드시겠습니까?
- 9. Jenkins xcode 앱 버전을 Hockeyapp로 업데이트
- 10. iOS 앱 및 테이블 ID의 SQLite DB
- 11. sqlite 데이터베이스에서 AppEngine의 GAE 데이터 스토어로 데이터로드
- 12. 이전 DB 구조에서 새 DB 구조로 내보내기
- 13. iOS CoreData에서 다중 행 sqlite db 업데이트
- 14. SQLite dB 안드로이드 업데이트 안 함
- 15. 업데이트 문에 sqlite db 열을 참조하려면 어떻게해야합니까?
- 16. Android QuickAction 및 SQLite DB 업데이트
- 17. sqlite_ * 함수가 SQLite 버전을 사용하도록 업데이트 될 때. 3
- 18. Facebook 모바일이 앱 스토어로 리디렉션되며 앱이 아닙니다.
- 19. iPhone에서 SQLite db 디버깅
- 20. 새로운 색인 구조로 neo4j 확장하기
- 21. Android SQLite DB 알림
- 22. iPhone 앱 버튼 앱 스토어로 이동하여 리뷰 남기기
- 23. 앱 업데이트 거부 이전 버전이 삭제됩니까?
- 24. SQLite 열기 및 닫기 DB
- 25. iOS 5.1에서 6.0으로 앱 업데이트 - 새로운 경고?
- 26. sqlite : db 다운로드
- 27. SQLite DB 피드 마스터 MySQL DB (안드로이드)
- 28. SQLite 업데이트시 스피너 업데이트
- 29. iPhone 앱 업데이트에서 기존 Sqlite db에 콘텐츠 업데이트/삽입
- 30. iPhone 앱 업데이트
데이터베이스 업그레이드 전략에 대한 내 대답은 http://stackoverflow.com/a/9851554/108574를 확인하십시오. –
@HeShiming 고마워. 하지만 이미 앱 스토어에 버전 1.0을 업로드했으며 메타 데이터 테이블 (제안한대로 데이터베이스 버전 저장 용)이 없습니다. 이제 새로운 버전을 업로드하고 db 구조가 변경되었습니다. 그럼 지금 어떻게 할 수 있습니까? – anshul
잘 그 방법은 여전히 유효합니다. select 문의 반환 값을 확인하여 메타 데이터 테이블의 존재를 확인하면됩니다. 그런 다음 존재하지 않는다면 하나를 만듭니다. –