GDA Missing records in SQLite
Mark Johnson
mrj001 at shaw.ca
Wed Feb 20 23:34:34 EST 2008
Michael Vrable wrote:
> 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.
>
PostgreSQL gives a warning for '', but accepts it; it prefers \'. MySql
takes the ''; I'm not sure about \'. Obviously SQLite won't take the \'.
However, the real problem is that it is not gnucash-gda code which is
doing the escaping of the single quote. It is libgda, probably the
SQLite provider. Therefore not under this project's control.
> --Michael Vrable
>
>
Mark
More information about the gnucash-devel
mailing list