Comprobar una base de datos con verify

Traducción automática provisional, sin revisar. En caso de duda, consulte la versión en inglés, que es la versión de referencia.

kent verify compara la estructura de una base de datos con el esquema que crearía esta compilación de Cordelia e informa de las diferencias.

Es de solo lectura y es el comando de diagnóstico: donde los demás rechazan una base que no pueden leer, este la abre igualmente y le dice por qué.

Sinopsis

kent verify <dbfilename>

Una base de datos que coincide

$ kent verify mydata.sqlite
Database:  mydata.sqlite

No differences: every table this database has matches the schema this build creates.
$ echo $?
0

Una base de datos que no coincide

Cada diferencia es una línea, y el recuento se repite al final para que un informe largo siga siendo legible. Esta es una base escrita con el esquema 1, comprobada por una compilación que crea el esquema 2:

$ kent verify old.sqlite
Database:  old.sqlite

difference: user_version: this build writes 2, the database reports 1
difference: Monitoring.intensity: the database says INTEGER, this build says REAL
difference: Monitoring.ascent: the database says INTEGER, this build says REAL
difference: Monitoring.descent: the database says INTEGER, this build says REAL

4 differences from the schema this build creates.
$ echo $?
1

Una columna que la base tiene y que Cordelia no crea se informa igual, que es lo que se ve si algo ajeno a Cordelia ha escrito en el archivo:

$ kent verify drifted.sqlite
Database:  drifted.sqlite

difference: Session.my_extra_column: the database has this column, this build does not create it

1 difference from the schema this build creates.
$ echo $?
1

Lee una base de datos que los demás rechazan

info, details, files, activities y sports rechazan una base cuya user_version sea más antigua de lo que espera esta compilación. verify no, deliberadamente: una versión equivocada es el caso que existe para diagnosticar, así que negarse a abrir el archivo lo haría inútil justo cuando hace falta.

Lo que no comprueba

Compara estructura, no contenido: tablas, columnas y sus tipos declarados, más la versión del esquema. No valida los datos de las filas ni comprueba que el propio formato de archivo de SQLite esté intacto. Para eso, la herramienta correcta es PRAGMA integrity_check de SQLite.

Además, solo informa de diferencias en tablas que la base tiene. Una tabla que Cordelia define y que esta base nunca creó no es un hallazgo, porque una base materializa solo lo que necesitaron sus datos importados. Eso es normal, y las bases deportivas publicadas son todas así: 14 tablas de las 128 que define el esquema.

Códigos de salida

0 cuando nada difiere, 1 cuando algo difiere. Eso lo hace utilizable como prueba en un script, que es la razón por la que imprime un recuento además de las líneas.

Véase también