Guy Hindell wrote:
[EMAIL PROTECTED] wrote:
Guy Hindell <[EMAIL PROTECTED]> wrote:
I would like to use sqlite (v3.3.8) on a linux box (fedora core 5) to read/write a database file in a directory which is actually on a windows share mounted via samba/cifs. I can open the file, and read from it, but writing produces "disk I/O error" messages (SQLITE_IOERR error code). I can write ordinary files on the share (echo "foo" > [share]/file.txt) so it doesn't look like a permissions issue. Only one process is ever going to access the file so I wouldn't expect locking issues. If I try turning things around so that I build/run my sqlite program on windows and access a file on a samba share exported from my linux box I can read/write without any errors.


Please turn on extended result codes using

  sqlite3_extended_result_codes(db, 1)

Then tell me the detailed error code that results from this
error.  That will help to isolate the problem.
--
D. Richard Hipp  <[EMAIL PROTECTED]>


-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------



Hi, sorry for the delay - been away from email for a couple of days.

I have tried adding a call to sqlite3_extended_result_codes() as you describe above (called once after the db file is opened on the handle returned from sqlite3_open()). Still get simply error code 10 (SQLITE_IOERR) back from write statements (no upper bits set), but now get no error text from sqlite3_get_table() (which I use to front all my sqlite3_exec() calls).

What next?

guy

BTW, regarding the other post about file sizes greater than 2GB, no, the file is tiny.





-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------



OK, a bit more playing shows that the point at which the SQLITE_IOERR is produced is in os_unix.c, line ~1586 -

   lock.l_type = F_UNLCK;
   lock.l_whence = SEEK_SET;
   lock.l_start = PENDING_BYTE;
   lock.l_len = 2L;  assert( PENDING_BYTE+1==RESERVED_BYTE );
   if( fcntl(pFile->h, F_SETLK, &lock)==0 ){
     pLock->locktype = SHARED_LOCK;
   }else{
rc = SQLITE_IOERR_UNLOCK; /* This should never happen <--- BUT IT DOES :-(
   }

Not sure why I don't see this as an extended result, but it seems like the cifs mounted filesystem isn't behaving in the expected manner.

guy




-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to