[GNC] gnucash 3.x corrupts data file

Jörg Schaible joerg.schaible at gmx.de
Sun Nov 4 19:31:58 EST 2018


Hi,

I am a long time user of gnucash (~ fora decade) and have used until last month version 2.7.4. My distribution 
(Gentoo) set then version 3.2 as stable so I switched to it. I can open my data file written by 2.7.4 with 
success, but as soon as I make a change a and write it back, gnucash is no longer able to open that file and a 
dialog pops up (nearly at the end of the loading process), with an error message: "There was an error parsing 
the file /home/joehni/.local/gnucash2/Finance.gc2."

When I start gnucash from the console, it will print an entry of the data file, when the dialog appears:

 <gnc:transaction version="2.0.0">
   <trn:id type="guid">e1822daceb8b84988373e0df77f579cf</trn:id>
   <trn:currency>
     <cmdty:space>CURRENCY</cmdty:space>
     <cmdty:id>EUR</cmdty:id>
   </trn:currency>
   <trn:date-entered>
     <ts:date>2013-01-26 19:28:12 +0100</ts:date>
   </trn:date-entered>
   <trn:description/>
   <trn:slots>
     <slot>
       <slot:key>date-posted</slot:key>
       <slot:value type="gdate">
         <gdate>201-01-02</gdate>
       </slot:value>
     </slot>
   </trn:slots>
   <trn:splits>
     <trn:split>
       <split:id type="guid">015fa8714ca0f972d5fd1a26ef0a42eb</split:id>
       <split:reconciled-state>n</split:reconciled-state>
       <split:value>0/100</split:value>
       <split:quantity>0/100</split:quantity>
       <split:account type="guid">83053d3a807429e9f622ff73e9f0ef01</split:account>
     </trn:split>
   </trn:splits>
 </gnc:transaction>

I also tried version 3.3, but got the same results. When I restore the backup of the data file last written by 
2.7.4, gnucash is able to open it. However, if it is written back after a modification, it cannot load the file 
anymore the next time.

I've decompressed the data files already and checked that the entry above is already in the old data file. 
However, the difference between the old file and the new one is exactly in that entry (apart from a single 
change to a description of a transaction required to write the data file back):

============== %< ===============
~/tmp/mem $ diff -u Finance.gc2.20181025201900. Finance.
--- Finance.gc2.20181025201900. 2018-11-05 01:19:42.197548980 +0100
+++ Finance.    2018-11-05 01:19:48.588632156 +0100
@@ -733631,9 +733631,6 @@
     <cmdty:space>CURRENCY</cmdty:space>
     <cmdty:id>EUR</cmdty:id>
   </trn:currency>
-  <trn:date-posted>
-    <ts:date>1970-01-01 00:59:59 +0100</ts:date>
-  </trn:date-posted>
   <trn:date-entered>
     <ts:date>2013-01-26 19:28:12 +0100</ts:date>
   </trn:date-entered>
============== %< ===============

It seems the new version drops the date-posted entry, maybe because in the entry above the gdata in the 
slot element is invalid.

What's the best action to get my data back with version 3.x? Can I simply get rid of that transaction or is there 
somewhere else a counterpart? Or should I try to fix the gdate and adjust the value of date-posted? How can 
I identify that transaction running gnucash?

Regards,
Jörg



More information about the gnucash-user mailing list