Verificare un database con verify
Traduzione automatica provvisoria, non revisionata. In caso di dubbio, consultare la versione inglese, che è la versione di riferimento.
kent verify confronta la struttura di un database con lo schema che questa build
di Cordelia creerebbe e riporta le differenze.
È di sola lettura ed è il comando diagnostico: dove gli altri rifiutano un database che non riescono a leggere, questo lo apre comunque e vi dice perché.
Sintassi
kent verify <dbfilename>
Un database che corrisponde
$ kent verify mydata.sqlite
Database: mydata.sqlite
No differences: every table this database has matches the schema this build creates.
$ echo $?
0
Un database che non corrisponde
Ogni differenza è una riga, e il conteggio è ripetuto alla fine perché anche un report lungo resti leggibile. Questo è un database scritto con lo schema 1, controllato da una build che crea lo schema 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 colonna che il database ha e che Cordelia non crea viene segnalata allo stesso modo: è quello che vedete se qualcosa di esterno a Cordelia ha scritto nel file:
$ 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
Legge un database che gli altri rifiutano
info,
details,
files,
activities e
sports rifiutano tutti un database la cui
user_version è più vecchia di quanto questa build si aspetti.
verify no, deliberatamente: una versione sbagliata è proprio
il caso che serve a diagnosticare, quindi rifiutarsi di aprire il file lo renderebbe inutile
proprio quando serve.
Che cosa non controlla
Confronta la struttura, non il contenuto: tabelle, colonne e i tipi dichiarati, più la
versione dello schema. Non convalida i dati nelle righe e non controlla che il formato di
file di SQLite sia integro. Per quest’ultimo, lo strumento giusto è
PRAGMA integrity_check di SQLite.
Inoltre riporta solo differenze nelle tabelle che il database ha. Una tabella che Cordelia definisce e che questo database non ha mai creato non è un rilievo, perché un database materializza solo ciò di cui i dati importati avevano bisogno. È normale, e i database sportivi pubblicati sono tutti così: 14 tabelle sulle 128 definite dallo schema.
Codici di uscita
0 quando non c’è nulla di diverso, 1 quando qualcosa lo è. Questo lo
rende utilizzabile come test in uno script, ed è il motivo per cui stampa un conteggio oltre
alle righe.