Vérifier une base de données avec verify
Traduction automatique provisoire, non révisée. En cas de doute, consultez la version anglaise, qui fait référence.
kent verify compare la structure d’une base au schéma que cette version de
Cordelia créerait, et signale les différences.
Il est en lecture seule et c’est la commande de diagnostic : là où les autres refusent une base qu’elles ne savent pas lire, celle-ci l’ouvre quand même et vous dit pourquoi.
Synopsis
kent verify <dbfilename>
Une base conforme
$ kent verify mydata.sqlite
Database: mydata.sqlite
No differences: every table this database has matches the schema this build creates.
$ echo $?
0
Une base non conforme
Chaque différence tient sur une ligne, et le total est répété à la fin pour qu’un long rapport reste lisible. Voici une base écrite sous le schéma 1, vérifiée par une version qui crée le schéma 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
Une colonne que la base possède et que Cordelia ne crée pas est signalée de la même façon : c’est ce que vous voyez si quelque chose d’extérieur à Cordelia a écrit dans le fichier :
$ 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
Il lit une base que les autres refusent
info,
details,
files,
activities et
sports refusent toutes une base dont la
user_version est plus ancienne que ce que cette version attend.
verify non, délibérément : une mauvaise version est
précisément le cas qu’il sert à diagnostiquer, donc refuser d’ouvrir le fichier le rendrait
inutile au moment où l’on en a besoin.
Ce qu’il ne vérifie pas
Il compare la structure, pas le contenu : tables, colonnes et types déclarés, plus la version
du schéma. Il ne valide pas les données des lignes et ne vérifie pas que le format de
fichier de SQLite est intact. Pour cela, PRAGMA integrity_check de SQLite est
l’outil qu’il faut.
Il ne signale par ailleurs que les différences dans les tables que la base possède. Une table que Cordelia définit et que cette base n’a jamais créée n’est pas un constat, car une base ne matérialise que ce dont ses données importées avaient besoin. C’est normal, et les bases sportives publiées sont toutes ainsi : 14 tables sur les 128 que définit le schéma.
Codes de sortie
0 quand rien ne diffère, 1 dès que quelque chose diffère. Cela le
rend utilisable comme test dans un script, et c’est pourquoi il imprime un total en plus des
lignes.
Voir aussi
- Établir un rapport sur une base de données avec
info - Exporter une base de données avec
sqldump - Messages d'erreur et codes de sortie
- Codes de sortie
- Rapport complet avec details
- Lister les fichiers importés avec files
- Lister les activités avec activities
- Lister les sports avec sports
- Bases de Données d'Exemple Cordelia