Bug 611936 and the 2.4.0 release

Mike Evans mikee at saxicola.idps.co.uk
Mon Aug 9 18:18:12 EDT 2010


On Monday August 9 2010 20:03:26 Geert Janssens wrote:
> Mike and John,
> 
> Thank you both for your feedback (here and on the bug report).
> 
> I think it's safe to conclude that sqlite3 doesn't fly on Fedora 12 (3
> independent reports so far), it doesn't work on Mandriva 2010.0 either.
> 
> It does work on OS X though, which also uses libdbi-0.8.3.
> Debian is still using 0.8.2 currently.
> It'd be useful to hear from other platforms as well, like openSuSE (at
> least 10.2 ships libdbi 0.8.3).
> 
> Is sqlite3 support on Fedora imporant enough to consider this bug blocking
> for 2.4 ? I would think so as the db support is a major feature for 2.4
> and sqlite3 is the candidate to become the future default backend.
> 
> Do you agree on this ?
> 
> Geert
> 
> On Monday 9 August 2010, Mike Evans wrote:
> > On Monday August 9 2010 11:01:32 Geert Janssens wrote:
> > > On Monday 9 August 2010, Mike Evans wrote:
> > > > What configure option do I need to include sqlite3?  Running
> > > > configure
> > > > 
> > > >  --help doesn't help.
> > > 
> > > That would be --enable-dbi. This will build gnucash with dbi support.
> > > To actually use sqlite3 with dbi, you will need to install the
> > > dbi-sqlite3 driver (it's called libdbi-dbd-sqlite on Fedora 13).
> > > 
> > > Geert
> > 
> > Thanks Geert.
> > 
> > On saving I get a dialog with "The server at URL
> > sqlite3:///home/mikee/Projects/gnucash-mfe/test.sqlite.gnucash
> > experienced
> > 
> >  an error or encountered bad or corrupt data."
> > 
> > Then on reloading  all transactions  are zero.
> > 
> > Error output is lots of:
> >  12:44:03  CRIT <gnc.engine>     xaccSplitSetValue: assertion
> > 
> > `gnc_numeric_check(amt) == GNC_ERROR_OK' failed
> > * 12:44:03  CRIT <gnc.engine>     xaccSplitSetAmount: assertion
> > `gnc_numeric_check(amt) == GNC_ERROR_OK' failed
> > * 12:44:03  CRIT <gnc.engine>     xaccSplitSetValue: assertion
> > `gnc_numeric_check(amt) == GNC_ERROR_OK' failed
> > * 12:44:03  CRIT <gnc.engine>     xaccSplitSetAmount: assertion
> > `gnc_numeric_check(amt) == GNC_ERROR_OK' failed
> > 
> > and several:
> > 
> > 12:44:03  WARN <gnc.backend.sql>     [load_taxtable_guid()] Taxtable ref
> > '5357d7648a50bf2971ae7ebadd337c7e' not found
> > * 12:44:03  WARN <gnc.backend.sql>     [load_taxtable_guid()] Taxtable
> > ref '5357d7648a50bf2971ae7ebadd337c7e' not found
> > * 12:44:03  WARN <gnc.backend.sql>     [load_taxtable_guid()] Taxtable
> > ref '5357d7648a50bf2971ae7ebadd337c7e' not found
> > 
> > Saving as mysql I also get a dialog with:
> >  The server at URL mysql://USER:PASSWORD@localhost/gnucash experienced an
> > 
> > error or encountered bad or corrupt data.
> > 
> > However, the data loads back OK.
> > I hadn't tested mysql for a while so I'm not sure when the problem was
> > introduced but It used to work fine with no error dialog.  I should open
> > a
> > 
> >  new bug I guess.
> > 
> > This is on Fedora 12 with libdbi-dbd-sqlite-0.8.3-5.fc12.i686 and
> > libdbi-dbd-mysql-0.8.3-5.fc12.i686

Originally I thought, ooh a database full of stuff I can query and format in 
any way choose, then ooh, I can do stuff from ZenCart (other online shops are 
available) and write code to directly update GnuCash with sales.  Then I 
thought of the disasters that can occur, especially if an update is made while 
I have GnuCash open, plus those caused by dodgy code.  So I thought maybe it's 
not such a "good thing" as I first thought.  I liked the fact that with XML I 
can make a mistake (and I've made many while learning the system) and not save 
the changes, then revert to the original file.  With mysql I can't, as changes 
are immediate.  Not sure about sqlite as I never thought about it as an 
option.

Further research involving the python bindings informed me I can do sales 
inserts and updates and data extraction without screwing up the saved data 
(?).  This leads me to the conclusion that the safest data storage is the xml 
file.  I like the idea of messing with the data via other mechanisms than the 
GnuCash interface but the risk of data corruption far outweigh any of the 
flexibility afforded by mysql.  As a business user with the obligation for 
accurate and robust record keeping and yearly taxes to pay I am going to stick 
with xml.  Plus I have easily recovered file backups with rsnapshot.  I guess 
that goes for sqlite3 too though?

Saying that, the idea of interfacing with (on-line) sales software appears to 
be the potential "killer app." and if it can be implemented safely would be a 
great seller(?) for GnuCash.  Balancing the merits of data security with 
convenience is never going to be easy and I wonder if GnuCash should go down 
that road.  However, if users are given the choice at least they have a choice 
to make, provided the pitfalls are appreciated by those willing to develop 
peripheral code to integrate GnuCash with whatever application they choose.  
It seems to me that although many users on the mailing list are programming 
literate and are well able to make that choice, many are not and these are the 
ones least likely to be mailing list users and likely most vulnerable to data 
loss.

Just a personal opinion.  I will be using xml for my business accounts.  I 
will be using the invoice/bill importer, as I make purchases from Rapid, 
Farnell and RS.  I will be looking at the python bindings for sales 
connections to web shops but in a purely academic mode as I have no clients 
requiring that functionality.

So in brief.  Since database support is a major feature of the next release 
then yes, it needs to work on all potential platforms.  It needs more 
testers/feedback though and there certainly doesn't appear to enough 
developer/testers for sufficient feedback on this issue on this mailing list.

Rather more information than you requested Geert and a bit rambling but I 
thought I'd sum up my thoughts here.

MikeE

-- 
GPG Key: 1024D/050895C2
Keyserver: http://pgp.mit.edu/          
Search String: 0x050895C2


More information about the gnucash-devel mailing list