Unless sqlite3_blob_open() returns SQLITE_MISUSE, the error code and
message are available on the connection object. This means we have to
handle SQLITE_MISUSE error messages explicitly.
rc = sqlite3_blob_open(self->db, name, table, col, row, !readonly, &blob);
Py_END_ALLOW_THREADS
- if (rc != SQLITE_OK) {
+ if (rc == SQLITE_MISUSE) {
+ PyErr_Format(self->state->InterfaceError, sqlite3_errstr(rc));
+ return NULL;
+ }
+ else if (rc != SQLITE_OK) {
_pysqlite_seterror(self->state, self->db);
return NULL;
}