There's a little bit written about SQLITE_SCHEMA errors here:

http://www.sqlite.org/faq.html#q17


--- "Kervin L. Pierre" <[EMAIL PROTECTED]> wrote:

> Hi,
> 
> Thanks for your response.  I'm at wit's end
> with this thing.
> 
> I do open the database multiple times, but
> exactly once per thread.  I then keep the
> sqlite3* on thread local storage and only
> use that pointer on the thread it was created
> on.  This is how I interpreted the documentation.
> Is that correct?
> 
> I wrote a function to get a sqlite3* pointer.
> Any method that requires SQLite API calls
> GetDatabaseHandle() first...
> 
> EnterCriticalSection(&otlkcon_sqlite_cs);
>      databaseHandle = (sqlite3 *)TlsGetValue(otlkcon_tlsIndex);
>      if( databaseHandle == NULL )
>      {
>          // Thread does not have a db handle yet
>       sqlRes = sqlite3_open(databaseFilename, &databaseHandle);
>       if (  sqlRes != SQLITE_OK )
>       {
>               // error code and exit...
>       }
>          sqlRes = TlsSetValue( otlkcon_tlsIndex, databaseHandle );
>      }
> LeaveCriticalSection(&otlkcon_sqlite_cs);
> 
> http://cvs.sourceforge.net/viewcvs.py/otlkcon/otlkcon0/mstore/O_IProp.cpp?view=markup
> 
> Tls* functions provide thread local storage.
> By my reckoning, this should garantee a strict
> sqlite3*<->thread relationship.
> 
> Do mind sharing or explaining your changes?
> 
> Thanks,
> Kervin
> 
> 
> Randall Fox wrote:
> > On Thu, 03 Feb 2005 14:15:52 -0500, you wrote:
> > 
> > 
> >>Hello,
> >>
> >>I am using SQLite 3.0.8 in a Win32 threaded
> >>environment.
> >>
> >>I keep getting random "Database schema has changed"
> >>errors even though I am using thread local
> >>storage to make sure sqlite3_open() gets called
> >>on each thread and a there is a sqlite3* per thread.
> >>
> >>Has anyone had any luck with resolving SQLITE_SCHEMA
> >>errors in a threaded environment?
> > 
> > 
> > How are you accessing the database?  Do you open it multiple times and
> > write to it?
> > 
> > I had the same problem with the schema errors.  I was opening the
> > database twice, and when I would create a table with one of the open
> > instances, the other would get the schema error the next time I
> > started a write operation. 
> > 
> > I did end up fixing it by rewriting part of the SQLITE code.
> > 
> > Randall Fox
> > 
> > 
> > 
> > 
> 
> 



                
__________________________________ 
Do you Yahoo!? 
Yahoo! Mail - Helps protect you from nasty viruses. 
http://promotions.yahoo.com/new_mail

Reply via email to