Hello, I am using sqlite3 version 3.11.0. I use the C API.I create a table "create table device(ieee integer primary key, name text, status integer, zclversion integer, applicationversion integer, stackversion integer, hwversion integer, manufacturername text, modelidentifier text, datecode text, endpoint blob);" Then I insert a record with ieee. insert into device(ieee) values(12345); After that I get a table with ieee=12345; Then I want to add the last blob column.So I write those code.
sqlite3_blob * blob = NULL; int ret = sqlite3_blob_open(db, "main", "device", "endpoint", 12345, 1, &blob); const char* result = sqlite3_errmsg(db->db); fprintf(stdout, "------------------ %s \n", result); I got a error when I open the blob.Why? the errmsg is "cannot open value of type null I debug the sqlite3 the stack #0 blobSeekToRow (p=0x812df08, iRow=12345, pzErr=0xbffff314) at ../sqlite/sqlite3.c:81136 #1 0x080a1cb0 in sqlite3_blob_open (db=0x811d3f8, zDb=0x80f7a90 "main", zTable=0x80f7851 "device", zColumn=0x80f7a87 "endpoint", iRow=12345, flags=1, ppBlob=0xbffff38c) # at ../sqlite/sqlite3.c:81386 rc = sqlite3_step(p->pStmt); x if( rc==SQLITE_ROW ){ x VdbeCursor *pC = v->apCsr[0]; x u32 type = pC->aType[p->iCol]; x if( type<12 ){ x zErr = sqlite3MPrintf(p->db, "cannot open value of type %s", x type==0?"null": type==7?"real": "integer" x ); x rc = SQLITE_ERROR; x sqlite3_finalize(p->pStmt); x p->pStmt = 0; x }else{ x p->iOffset = pC->aType[p->iCol + pC->nField]; x p->nByte = sqlite3VdbeSerialTypeLen(type); x p->pCsr = pC->uc.pCursor; x sqlite3BtreeIncrblobCursor(p->pCsr); x } x } 2016-03-03 zhangkai