GDA Missing records in SQLite
Michael Vrable
vrable at cs.hmc.edu
Wed Feb 20 17:42:56 EST 2008
On Wed, Feb 20, 2008 at 03:09:50PM -0700, Mark Johnson wrote:
> Found the error message. It is buried in gnucash.trace. This is
> really not sufficient notification that data has been dropped.
>
> Here is a sample entry from my save:
> * 13:47:49 WARN <> SQlite SQL: INSERT INTO accounts (guid, name,
> account_type, commodity_guid, parent_guid, code, description) VALUES
> ('499fc8a75a6f9723cc42cf04448e9808', 'TD Int\'l Equity', 'MUTUAL',
> '67d52ac9d9c722972de705ea22507ff2',
> 'fc945d5e7719c32b986b2b30ddf957f8', '', '') (REMAIN:INSERT INTO
> accounts (guid, name, account_type, commodity_guid, parent_guid, code,
> description) VALUES ('499fc8a75a6f9723cc42cf04448e9808', 'TD Int\'l
> Equity', 'MUTUAL', '67d52ac9d9c722972de705ea22507ff2',
> 'fc945d5e7719c32b986b2b30ddf957f8', '', ''))
> * 13:47:49 CRIT <gnc.backend.gda> [gnc_gda_execute_query()] SQL
> error: near "l": syntax error
>
> This is, indeed, one of the accounts that gnucash-gda failed to
> create. There are many similar errors in the gnucash.trace file.
>
> NOTE the syntax error near "l". This indicates to me that the
> escaping of the single quote has been done incorrectly for SQLite. I
> haven't yet found what the correct way to do it is in their
> documentation. Unfortunately, the SQLite doc I am looking at directs
> me to look at the parse.y file for details on the language.
Double the single quote. So
TD Int'l Equity
is written as a string as
'TD Int''l Equity'
I believe (but haven't double-checked) that this is the standard means
of escaping a single quote in SQL. Some databases also happen to
support \', but I think '' should work for all.
--Michael Vrable
More information about the gnucash-devel
mailing list