"disk is full" is not a recoverable error, because SQLite can no longer keep track of anything by writing to a journal file. You can't do anything using the SQLite API to recover from it so the SQLite API will no longer work in a dependable way. This has always been the case. Quitting once you get a "disk is full" error will lead to a database which can be recovered (i.e. not corrupt) once you have freed up some space and restarted the program. If your application has to work under situations where a SQLite database volume may fill up, guard against it outside SQLite. For instance, you might run a routine once a minute (hour ?) which checks to see whether there is less than a megabyte free on the drive. If that happens, terminate the app or delete old files accordingly, then check again to see whether it's safe to continue. Do it to *prevent* SQLite getting a "disk is full" error.