2 votos

Intentando vaciar todas las bases de datos en /data con sqlite3, pero falla con el error 14

Me gustaría aspirar todos mis archivos de base de datos en /data, para lograr un rendimiento un poco mejor, así que ejecuté el siguiente script:

for i in $(find /data -iname "*.db"); do
#echo $(basename $i);
sqlite3 $i 'VACUUM;';
resVac=$?
if [ $resVac == 0 ]; then
    resVac="ÉXITO";
else
    resVac="CÓDIGO DE ERROR-$resVac";
fi;

sqlite3 $i 'REINDEX;';
resIndex=$?
if [ $resIndex == 0 ]; then
    resIndex="ÉXITO";
else
    resIndex="CÓDIGO DE ERROR-$resIndex";
fi;
echo "Base de datos $i:  VACUUM=$resVac  REINDEX=$resIndex" | tee -a /data/vacuum.log
done

Como puedes ver, este script aspira y reindexa cada archivo de base de datos en /data. REINDEX funciona bien, pero VACUUM no. Devuelve "Error: no se puede abrir el archivo de base de datos". (código de error 14)

Estoy trabajando con /data. Así que, no puede ser un problema de montaje.

2voto

Andy Brudtkuhl Puntos 1714

A diferencia de REINDEX, el comando VACUUM necesita crear un nuevo archivo temporal para trabajar. Luego reemplaza el archivo de la base de datos con este archivo temporal. Esto significa que necesita acceso de escritura, no solo al archivo de la base de datos, sino también al directorio en el que se encuentra.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X