[Résolu] Database disk image is malformed

Vous constatez une anomalie dans GesFine, c'est ici ...

Modérateur : Patrice15220

Répondre
nlavieville
Messages : 12
Enregistré le : 05 janvier 2015, 17:56

[Résolu] Database disk image is malformed

Message par nlavieville »

Bonjour,

j'utilise GesFine depuis plusieurs mois sans problème mais depuis quelques temps j'ai un problème avec la base de données et aujourd'hui certaines fonctionnalités ne marche plus à cause d'une erreur.

J'utilise la dernière version du logiciel, v5.9.63.5634

Quand j’exécute GesFine j'ai les messages suivants dans une fenêtre Dll Error :

Message 1 :
database disk image is malformed
database disk image is malformed
à System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
à System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
à System.Data.SQLite.SQLiteDataReader.NextResult()
à System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
à System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
à System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior)
à System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
à GesFineBdd.BddMod.ExecuteSQLNonQuery(String stSQL, SQLiteConnection oObjectConnection, Boolean bOptimTransaction, Boolean bDisplayMessage, Boolean bUpdateTablePlugin, ParametersSQL oParametersSQL, String& stMsgError)

Message 2 :
database disk image is malformed
database disk image is malformed
à System.Data.SQLite.SQLite3.Reset(SQLiteStatement stmt)
à System.Data.SQLite.SQLite3.Step(SQLiteStatement stmt)
à System.Data.SQLite.SQLiteDataReader.NextResult()
à System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
à System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
à System.Data.SQLite.SQLiteCommand.ExecuteDbDataReader(CommandBehavior behavior)
à System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)
à System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
à System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
à System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable)
à GesFineBdd.BddMod.LoadToSaveTableBddInTableDts(String stTableDTS, SQLiteConnection oObjectConnection, DataSet oDataset, SQLiteCommand oCommand, SQLiteDataAdapter oDataAdapter)

Message 3 :
La référence d'objet n'est pas définie à une instance d'un objet.
à GesFineBdd.BddMod.ImportPriceLive(Form oF_Main, MenuStrip oTS_MenuMain, ToolStrip oTS_StatusMain, ToolStripMenuItem oMI_ImportPriceLive, ImageList oImageListConnection, Int32 iTempo, Boolean bCheckInternet, Boolean& bInternetOpen, Boolean bOffLine, SQLiteConnection oConnectionThread, DataSet oDatasetThread, DataSet oDatasetPriceLive, DataTable oDataTableT_SPL, Boolean& bNeedUpdateDataPriceOfLive, Boolean bNeedUpdateLastTime, Boolean bRunUnderMono)

Ensuite, je peux saisir le mot de passe et ajouter des opérations sur les comptes.
Dernièrement j'ai voulu vérifier des opérations, mais au moment de valider les opérations j'ai le message suivant :

L'enregistrement dans la base de données est impossible, les données ne sont pas conforme aux contrôles d'intégrité.
Ce problème peut survenir si vous utilisez des données qui ont été supprimées par un autre utilisateur en réseau durant votre session. Veuillez vérifier en relançant GesFine.

Message d'erreur :

database disk image is malformed
database disk image is malformed

et impossible de valider les opérations avec les paramètres du relevé de compte.

Que puis-je faire pour corriger ce problème ?

Merci d'avance
Nicolas
Jacques Leblond
Administrateur
Messages : 6754
Enregistré le : 04 janvier 2010, 20:03
Localisation : France (Yvelines 78)
Contact :

Re: Database disk image is malformed

Message par Jacques Leblond »

Bonjour,

Ta base de données est corrompue.
Dans les Options/Préférences, rubrique Maintenance, si tu demandes la vérification de l'intégrité de la base de données, tu devrais avoir des erreurs.

Pour récupérer tes données, 2 solutions :
  • tu restaures tes données depuis la dernière sauvegarde automatique intègre
  • tu tentes de récupérer tes données de la base actuelle, pour cela tu la sauvegardes (copie de fichier dans un autre répertoire), tu crées une nouvelle base vierge en relançant l'installation de GesFine (Menu "Configuration") et tu restaures tes données de la base sauvegardée dans la base vierge.
    Puis tu vérifies si toutes tes données semblent là, et notamment si tes soldes de comptes sont corrects. Dans le cas contraire tu pourras m'envoyer ta base pour que j'essaye de récupérer le maximum de données.
En général la perte de données concerne les cours ou les devises.

Si tu es sujet à des plantages, ou à des arrêts intempestifs de PC, ou que tu travailles sur une base en réseau local, je te conseille d'activer l'option : "Désactiver les optimisations de performance ...".
nlavieville
Messages : 12
Enregistré le : 05 janvier 2015, 17:56

Re: Database disk image is malformed

Message par nlavieville »

Bonsoir

Merci pour votre réponse. Effectivement j'ai des erreurs quand je vérifie l'intégrité de la base.

J'ai suivi vos recommandations et j'ai pu importer une sauvegarde datant de début juin dans une nouvelle base.
Les sauvegardes suivantes sont vérolées.
Pour récupérer mes informations manquantes, j'ai imprimé les comptes modifiés depuis début juin et il ne me reste plus qu'à saisir les opérations manquantes.

J'espère que cela ne se reproduira pas :?
Jacques Leblond
Administrateur
Messages : 6754
Enregistré le : 04 janvier 2010, 20:03
Localisation : France (Yvelines 78)
Contact :

Re: Database disk image is malformed

Message par Jacques Leblond »

Tu peux aussi essayer la deuxième solution, les erreurs semblent concerner la table des cours, ce n'est pas très grave si tu perds quelques cours. Tu relances juste le contrôle des cours manquants dans les Options de GesFine pour t'assurer que tous les cours nécessaires sont encore présents.

Tu peux aussi plutôt que tout ressaisir, exporter tes opérations manquantes dans un fichier au format ofx ou qif et les réimporter, ce sera bien plus rapide.

Sinon si tu n'as pas de problème de crash avec ton PC, le souci vient probablement du fait que tu fermes ton PC alors qu'une mise à jour des cours est en cours.
Celle-ci peut être initialisée par l'agent de notification ou par GesFine. Dans ce dernier cas même si tu fermes GesFine le processus d'importation continue et si tu fermes ton PC juste au moment de l'enregistrement de données, cela peut corrompre les données.
Si tu penses être dans ce cas d'utilisation, pense à cocher l'option indiquée dans mon précédent message, elle préserve normalement la corruption de la base.
Patrice15220
Messages : 1577
Enregistré le : 18 août 2013, 15:29
Localisation : St Mamet La Salvetat (Cantal 15)

Re: Database disk image is malformed

Message par Patrice15220 »

Bonsoir Nicolas, bonsoir Jacques,

Personnellement je vérifie très régulièrement l'intégrité de la base de données.

A ce sujet, Jacques, ne pourrait-on pas au lancement de GesFine et avant la sauvegarde automatique de la base effectuer automatiquement la vérification d'intégrité ? Et en cas d'anomalie le signaler, ne pas sauvegarder et proposer de restaurer une sauvegarde valide.
  • Pensez à nommer votre sujet ainsi [Préfixe] Titre du message où [Préfixe] représente un module ou un menu de l'application
  • Quand votre question est "Résolue" merci de l'indiquer en éditant votre premier message et en choisissant la coche verte Image comme "icône de sujet"
Jacques Leblond
Administrateur
Messages : 6754
Enregistré le : 04 janvier 2010, 20:03
Localisation : France (Yvelines 78)
Contact :

Re: Database disk image is malformed

Message par Jacques Leblond »

Bonsoir Patrice,

Ton idée est intéressante, cela éviterait de continuer d'utiliser une base corrompue comme cela c'est produit pour Nicolas.
Par contre la vérification de l'intégrité peut prendre du temps et donc rallonger le temps de chargement du premier démarrage du jour.
Il faudrait que je fasse quelques mesures, en le faisant sur ma base ce soir cela a pris plusieurs secondes la première fois, mais au second lancement c'était très rapide. Je ne connais pas les mécanismes précis qu'effectue Sqlite, ni si il stocke des informations pour les demandes de vérifications suivantes.
Je note l'amélioration.
nlavieville
Messages : 12
Enregistré le : 05 janvier 2015, 17:56

Re: Database disk image is malformed

Message par nlavieville »

Bonjour,

je n'ai su importer ma base corrompue dans une nouvelle base. A chaque fois j'ai un message d'erreur d’échec de l'import.

Finalement j'ai suivit les conseils de Jacques : j'ai exporté/importé les opérations manquantes depuis la sauvegarde valide. Ca m'a évité de les ressaisir.
J'ai aussi activé l'option d'optimisation pour éviter que cela se reproduise.

Merci pour votre aide.
lagatine
Messages : 369
Enregistré le : 22 novembre 2014, 23:22

Re: Database disk image is malformed

Message par lagatine »

Jacques Leblond a écrit :Bonsoir Patrice,

Ton idée est intéressante, cela éviterait de continuer d'utiliser une base corrompue comme cela c'est produit pour Nicolas.
Par contre la vérification de l'intégrité peut prendre du temps et donc rallonger le temps de chargement du premier démarrage du jour.
Il faudrait que je fasse quelques mesures, en le faisant sur ma base ce soir cela a pris plusieurs secondes la première fois, mais au second lancement c'était très rapide. Je ne connais pas les mécanismes précis qu'effectue Sqlite, ni si il stocke des informations pour les demandes de vérifications suivantes.
Je note l'amélioration.
Bonjour,
C'est moi la vérification est très rapide. Au lieu d'une vérification systématique cela pourrait être un rappel au bout de X jours.
Salutations,
Répondre