Call to function 'NativeDatabase.prepareAsync' has been rejected.
Caused by: Error code: table telemetry_queue has no column named device_id
Causa: CREATE TABLE IF NOT EXISTS no añade columnas a tablas ya creadas.
- Apertura y migración se ejecutan una sola vez por proceso (
readyDbPromise). - La migración inspecciona
PRAGMA table_info(telemetry_queue). - Si falta
device_id:ALTER TABLE telemetry_queue ADD COLUMN device_id TEXT. - Índices y
schema_meta/PRAGMA user_version= 5. - Backfill de eventos activos vía
migratePendingEventsToDeviceId(no tocasynced/permanent_failure).
Las pruebas Jest simulan PRAGMA table_info y no sustituyen una prueba nativa de expo-sqlite / NativeDatabase.
- Instalar una APK o development build anterior sin la columna
device_id. - Abrir la aplicación.
- Generar al menos cinco eventos offline (tracking sin red o API bloqueada).
- Anotar: DeviceId local, cantidad de pendientes en UI.
- Cerrar la aplicación (no desinstalar).
- Actualizar con la build nueva sobre la instalación existente (sin borrar datos).
- Abrir la nueva versión.
- Confirmar que no aparece el error
table telemetry_queue has no column named device_id. - Confirmar que la UI conserva la cantidad de pendientes (±0 por captura nueva).
- Recuperar red / auth y sincronizar; confirmar envío.
- Confirmar que los eventos activos quedan con
device_id= UUID local. - Reiniciar la app; confirmar que no falla la migración y la cola permanece coherente.
| Campo | Valor |
|---|---|
| Fecha de validación | pendiente |
| Dispositivo / emulador | pendiente |
| Versión Android | pendiente |
| Build antigua (commit / versionCode) | pendiente |
| Build nueva (commit / versionCode) | pendiente |
| Eventos pendientes antes | pendiente |
| Eventos pendientes después | pendiente |
| Resultado sync | pendiente |
Error device_id reapareció |
No / Sí |
Validación nativa Android: MANUAL PENDIENTE
No hay dispositivo Android ni emulador disponible en este entorno. El procedimiento queda listo; no se afirma ejecución nativa aquí.
cd mobile
npx expo start -c
npx expo export --clearSi se usa APK o development build, reconstruir e reinstalar/actualizar la app.