Prepare can fail if the db is not open, or if the statement has problems that 
can be found during the compilation of the command. Usually they are static, so 
I often only check the results in a debug build, not a release one.

For SQLLite, I have often found improperly setup file based databases, often 
return "no connection" or "unable to fetch" for a multitude of issues


Scott
-----Original Message-----
From: Alexander Dyagilev [mailto:alervd...@gmail.com] 
Sent: Thursday, January 14, 2021 08:41
To: Scott Bloom <sc...@towel42.com>; interest@qt-project.org
Subject: Re: [Interest] SQLite: mystic bug: No query Unable to fetch row error

On 1/14/2021 7:06 PM, Scott Bloom wrote:
> Did the prepare fail?

No. But why should it fail?

> Do you check to see that the "m_db" database is valid, open, and connected?

No. However it should be opened. Anyway, in these cases the error should be 
different, isn't it?



>
> Scott
>
> -----Original Message-----
> From: Interest [mailto:interest-boun...@qt-project.org] On Behalf Of 
> Alexander Dyagilev
> Sent: Thursday, January 14, 2021 07:19
> To: interest@qt-project.org
> Subject: [Interest] SQLite: mystic bug: No query Unable to fetch row error
>
> Hello,
>
> Each instance of our app is supposed to have an unique id (UUID).
>
> At every start, it check if it has assigned one, and if not - generates it 
> and saves it to the SQLite database.
>
> We've found, that 4% of ours users has empty UUIDs.
>
> We've added some diagnostic reporting info and found, that this is caused by 
> SQLite database not being able to write generated UUID to it.
>
> QSqlQuery::exec returns false and its last error returns this error "No query 
> Unable to fetch row error".
>
> How can this be? I could not find any problems working with the database in 
> our code.
>
> We do it so:
>
> 1. Make sure the table exists:
>
> "CREATE TABLE IF NOT EXISTS miscData (Name TEXT, Value BLOB, PRIMARY KEY 
> (Name))"
>
> 2. Write value to the table:
>
> QSqlQuery query(m_db);
> query.prepare("REPLACE INTO miscData (Name, Value) VALUES (:Name, :Value)"); 
> query.bindValue(":Name", "UUID"); query.bindValue(":Value", UuidByteArray);
>
> if (!query.exec())
> {
>        // here we're getting this error....
> }
>
> What are the possible reasons of this error?
>
>
> _______________________________________________
> Interest mailing list
> Interest@qt-project.org
> https://lists.qt-project.org/listinfo/interest
_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to