Verificar um banco de dados com verify
Tradução automática provisória, não revisada. Em caso de dúvida, consulte a versão em inglês, que é a versão de referência.
kent verify compara a estrutura de um banco com o esquema que esta compilação do
Cordelia criaria e relata as diferenças.
É somente leitura e é o comando de diagnóstico: onde os outros recusam um banco que não conseguem ler, este o abre mesmo assim e diz por quê.
Sinopse
kent verify <dbfilename>
Um banco que corresponde
$ kent verify mydata.sqlite
Database: mydata.sqlite
No differences: every table this database has matches the schema this build creates.
$ echo $?
0
Um banco que não corresponde
Cada diferença é uma linha, e a contagem se repete no fim para que um relatório longo continue legível. Este é um banco escrito no esquema 1, conferido por uma compilação que cria o 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
Uma coluna que o banco tem e que o Cordelia não cria é relatada do mesmo jeito, que é o que você vê se algo externo ao Cordelia escreveu no arquivo:
$ 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
Ele lê um banco que os outros recusam
info,
details,
files,
activities e
sports recusam um banco cuja
user_version seja mais antiga do que esta compilação espera.
O verify não, de propósito: uma versão errada é justamente o
caso que ele existe para diagnosticar, então recusar abrir o arquivo o tornaria inútil
exatamente quando é necessário.
O que ele não confere
Ele compara estrutura, não conteúdo: tabelas, colunas e seus tipos declarados, mais a versão
do esquema. Não valida os dados nas linhas e não confere se o próprio formato de arquivo do
SQLite está íntegro. Para isso, a ferramenta certa é o
PRAGMA integrity_check do SQLite.
Ele também relata apenas diferenças em tabelas que o banco tem. Uma tabela que o Cordelia define e que este banco nunca criou não é um achado, porque um banco materializa só o que seus dados importados exigiram. Isso é normal, e os bancos esportivos publicados são todos assim: 14 tabelas das 128 que o esquema define.
Códigos de saída
0 quando nada difere, 1 quando algo difere. Isso o torna utilizável
como teste em um script, que é a razão de ele imprimir uma contagem além das linhas.
Veja também
- Relatar um banco de dados com
info - Exportar um banco de dados com
sqldump - Mensagens de erro e códigos de saída
- Códigos de saída
- Relatório completo com details
- Listar os arquivos importados com files
- Listar as atividades com activities
- Listar os esportes com sports
- Bancos de Dados de Exemplo do Cordelia