Estoy trabajando en la función de migración. Lee los datos de la tabla anterior y los inserta en la nueva. Todas esas cosas trabajando en el hilo de fondo con baja prioridad.error sqlite y 'restricción falló' al seleccionar e insertar al mismo tiempo
Mis pasos en el pseudo código.
sqlite3_prepare_stmt (select statement)
sqlite3_prepare_stmt (insert statement)
while (sqlite3_step (select statement) == SQLITE_ROW)
{
get data from select row results
sqlite3_bind select results to insert statement
sqlite3_step (insert statement)
sqlite3_reset (insert statement)
}
sqlite3_reset (select statement)
Siempre estoy poniendo 'restricción falló error en sqlite3_step (insert statement)
. ¿Por qué sucedió y cómo podría solucionar eso?
UPD: Según tengo entendido, esto ha sucedido porque el hilo de fondo usa el mango de db abierto en el hilo principal. Comprobando que adivinar ahora.
UPD2:
sqlite> select sql from sqlite_master where tbl_name = 'tiles';
CREATE TABLE tiles('pk' INTEGER PRIMARY KEY, 'data' BLOB, 'x' INTEGER, 'y' INTEGER, 'z' INTEGER, 'importKey' INTEGER)
sqlite> select sql from sqlite_master where tbl_name = 'tiles_v2';
CREATE TABLE tiles_v2 (pk int primary key, x int, y int, z int, layer int, data blob, timestamp real)
Gracias por la actualización. Edité mi respuesta y agregué información más útil (espero). –