Je rencontre un problème avec une nouvelle application sur le SDK iPhone en utilisant SQLite comme le backend DB.sqlite disque image de base de données mal formé sur iPhone SDK
De temps en temps, mon application arrête de charger des données sur mes UITableViews et après avoir téléchargé la base de données de l'appareil via l'Organisateur, je peux accéder à la base de données SQLite via la ligne de commande. Je peux interroger certaines tables correctement mais pas d'autres sans obtenir une erreur "Erreur SQL: l'image de disque de base de données est mal formée". Voir une session sqlite ci-dessous:
SQLite version 3.6.17
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> select * from user;
1|[email protected]|cpjolicoeur||4d055e38bb1d3758|image/gif|cartoonme_avatar.gif||Craig|Jolicoeur|1|1
sqlite> select * from item;
SQL error: database disk image is malformed
sqlite>
Dans cet exemple ma table utilisateur fonctionne très bien, mais ma table d'article est malformé, ce qui correspond à ce que je vois dans mon application où les articles DonT charge. L'application ne plante pas, les données ne se charge pas à cause de cette erreur mal formée.
Des idées pour lesquelles cela se passe? Ma seule pensée est que peut-être la base de données est corrompue parce que j'écris à la base de données SQLite via un thread d'arrière-plan dans l'application. Je télécharge des données à partir d'un serveur Web via un NSOperationQueue dans un thread d'arrière-plan et met à jour la base de données SQLite avec les données téléchargées. Est-ce que écrire dans la base de données dans un thread d'arrière-plan (tout en lisant potentiellement à partir du thread principal) corromprait la base de données, ou est-ce autre chose?
Suppression des fichiers WAL et SHM totalement fait pour moi! Merci –