Mensagens de erro e códigos de saída
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.
As mensagens de falha do Kent são um conjunto curto e fixo. Cada uma nomeia o comando que a produziu, então uma mensagem diz a você tanto o que deu errado quanto onde. Esta página lista todas elas.
O Kent imprime em inglês, então as mensagens abaixo aparecem exatamente como surgem no seu terminal; o que está traduzido é a explicação de cada uma.
Códigos de saída
Não há um código separado por tipo de falha. Em um script, teste o código de saída para decidir se o comando funcionou, e leia a mensagem para descobrir por que não funcionou:
if ! kent info mydata.sqlite; then
echo "could not report on the database" >&2
fi
Erros de linha de comando
Estes vêm da análise da linha de comando, antes de qualquer banco de dados ser aberto.
Cada um é seguido da listagem de uso completa, o mesmo texto que o
kent help imprime.
$ kent
missing command
usage: kent help
usage: kent createdb <dbfilename>
...
$ kent merge mydata.sqlite
unknown command: merge
usage: kent help
usage: kent createdb <dbfilename>
...
$ kent info
wrong number of arguments
usage: kent info <dbfilename>
kent sqldump e
kent archive são as exceções: recebem opções em vez de
um banco de dados posicional, então um banco omitido é relatado como opção ausente.
$ kent sqldump
missing required flag: --in
usage: kent sqldump --in <dbfilename> [--out <outfile>] [--schema-only]
$ kent archive --in mydata.sqlite
missing required flag: --out
usage: kent archive --in <dbfilename> --out <archive>
O archive e o restore exigem os dois o
--out, onde o sqldump o trata como opcional. Um zip não pode ser
gravado na saída padrão e um banco de dados não pode ser construído nela, então nenhum dos
dois tem um padrão ao qual recorrer.
Erros de arquivo e de banco de dados
Cada mensagem começa com kent e o nome do comando.
| Mensagem | O que significa |
|---|---|
kent createdb: NAME already exists | O arquivo de destino já está lá.
O createdb nunca sobrescreve; remova o arquivo
você mesmo se pretendia substituí-lo. |
kent info: NAME does not exist | O caminho não está lá. O Kent deliberadamente não o cria. A mesma mensagem aparece
para details. |
kent info: failed to open database: … | O arquivo existe, mas não pôde ser aberto como banco de dados Cordelia, comumente porque não é um, ou porque seu esquema é mais antigo do que esta compilação aceita. |
kent info: failed to read schema version | O banco de dados abriu, mas sua versão de esquema não pôde ser lida. |
kent info: failed to list tables | O banco de dados abriu, mas sua lista de tabelas não pôde ser lida. |
kent info: failed to count rows in NAME | A contagem de linhas de uma tabela específica não pôde ser lida. A tabela nomeada é a que falhou. |
kent createdb: failed to create database | O arquivo não pôde ser criado, na maioria das vezes um diretório ausente ou um problema de permissões no caminho de destino. |
kent createdb: failed to create tables | O arquivo foi criado, mas o esquema não pôde ser gravado nele. |
kent sqldump: NAME does not exist | O caminho dado a --in não está lá. Como nos outros comandos, o Kent não o
cria. |
kent sqldump: refusing to write the export over its own source:
NAME | --in e --out nomeiam o mesmo arquivo. Recusado antes de
qualquer leitura, em vez de truncar o banco de dados que você pediu para exportar. |
kent files: NAME does not exist | O caminho não está lá, e o Kent não o cria. Veja
files. |
kent archive: NAME does not exist | O caminho dado a --in não está lá. Como em todo outro comando, o Kent não
o cria. |
kent archive: cannot create the archive NAME | O destino dado a --out não pôde ser aberto para gravação, na maioria das
vezes um diretório ausente ou um problema de permissões. |
kent archive: cannot write NAME | Um arquivo não pôde ser gravado no diretório de preparação ao lado do destino.
Comumente um disco cheio: um pacote precisa de espaço para si e para seu conteúdo em
preparação ao mesmo tempo. Veja archive. |
kent archive: cannot add NAME to the archive | Um arquivo em preparação não pôde ser acrescentado ao zip. |
kent archive: finalising the archive failed | O zip não pôde ser fechado e concluído. O pacote parcial é removido em vez de deixado para trás. |
kent restore: NAME already exists | O banco de dados que --out nomeia já está lá. O
restore nunca sobrescreve um, a mesma regra que o
createdb segue. |
kent restore: NAME is not readable as a kent archive: … | O arquivo não é um zip, ou não pôde ser aberto. O motivo subjacente vem depois dos dois-pontos. |
kent restore: NAME is not a kent archive: it has no … | É um zip, mas falta o manifesto ou o esquema que todo pacote carrega. |
kent restore: this archive is format version N, but this build of kent
understands version M at most | O pacote foi gravado por um Kent mais novo. O Kent recusa em vez de adivinhar um formato posterior a ele. |
kent restore: the archive's manifest lists table "NAME" but the archive has
no … | O pacote está incompleto. Recusado em vez de restaurado em parte. |
kent restore: the archive's manifest claims N rows in "NAME" but it holds
M | O pacote discorda de si mesmo, então está danificado ou foi construído incorretamente. |
kent restore: the archive is inconsistent: its schema.sql stamps schema
version N but its manifest says M | O mesmo, para a versão de esquema. |
Onde uma mensagem termina em dois-pontos, o erro subjacente do banco de dados vem em seguida na mesma linha. Esse detalhe final vem da camada de banco de dados do Cordelia, então a mesma redação aparece no Cordelia. Veja as mensagens de erro do Cordelia.
O banco de dados anterior a esta compilação
Este merece destaque porque a redação pode soar como corrupção quando não é:
$ kent info old.sqlite
kent info: failed to open database: This database uses an older schema and cannot be opened; version 2 is required. Create a new database and import your .FIT files again.
$ echo $?
1
O arquivo está intacto. Ele simplesmente foi gravado por um Cordelia mais antigo do que esta compilação do Kent entende, e é recusado na abertura em vez de lido com um esquema que não corresponde a ele.
kent sqldump e
kent archive são os dois comandos que não o recusam.
Ler um banco de dados antigo é exatamente o que se faz antes de migrá-lo, então os dois o leem
assim mesmo. O sqldump avisa na saída de erro; isso é um aviso, não um erro, e o
código de saída é 0:
$ kent sqldump --in old.sqlite --out old.sql
kent sqldump: note: this database reports schema version 0, but this build of cordelia expects 2. Exporting it anyway.
$ echo $?
0
O archive não imprime tal observação. Ele registra a versão de esquema que
encontrou no próprio manifest.json do pacote, de modo que a informação viaja com
o pacote em vez de passar rolando por um terminal.
O Kent não tem nenhum comando que migre um banco antigo no lugar. Lê-lo é a entrada de uma migração, não uma migração em si. Veja Exportar um banco de dados com sqldump e Arquivar um banco de dados com archive.
Erros internos não tratados
Se algo escapar ao tratamento normal de erros do Kent, é relatado na saída de erro em vez
da saída padrão, e o código de saída continua sendo 1:
$ kent info /some/unreadable/path.sqlite
kent: filesystem error: ...
kent: unhandled exception of unknown type
Qualquer um dos dois vale um relato. Veja Relatórios de erros e solicitações de recursos, e inclua o comando exato que você executou.
Veja também
- Códigos de saída
- Roteiro do produto
- Obter ajuda e informações de versão
- Exportar um banco de dados com sqldump
- Arquivar um banco de dados com archive
- Reconstruir um banco de dados com restore
- Criar um banco de dados com createdb
- Listar os arquivos importados com files
- Mensagens de erro
- Relatórios de erros e solicitações de recursos