Mensajes de error y códigos de salida
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.
Los mensajes de fallo de Kent son un conjunto corto y fijo. Todos nombran el comando que los produjo, así que un mensaje le dice tanto qué salió mal como dónde. Esta página los lista todos.
Kent imprime en inglés, así que los mensajes de abajo se muestran tal cual aparecen en su terminal; la explicación de cada uno está traducida.
Códigos de salida
No hay un código distinto por tipo de fallo. En un script, compruebe el código de salida para decidir si el comando funcionó, y lea el mensaje para saber por qué no:
if ! kent info mydata.sqlite; then
echo "could not report on the database" >&2
fi
Errores de línea de comandos
Estos vienen del análisis de la línea de comandos, antes de abrir ninguna base de datos.
Cada uno va seguido del listado de uso completo, el mismo texto que imprime
kent help.
$ 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 y
kent archive son las excepciones: toman opciones en
lugar de una base de datos posicional, así que una base de datos omitida se informa como una
opción que falta.
$ 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>
archive y restore requieren ambos
--out, donde sqldump la trata como opcional. Un zip no puede
escribirse en la salida estándar y una base de datos no puede construirse en ella, así que
ninguno de los dos tiene un valor por defecto al que recurrir.
Errores de fichero y de base de datos
Cada mensaje empieza por kent y el nombre del comando.
| Mensaje | Qué significa |
|---|---|
kent createdb: NAME already exists | El fichero de destino ya está ahí.
createdb nunca sobrescribe; elimine usted el
fichero si pretendía reemplazarlo. |
kent info: NAME does not exist | La ruta no está ahí. Kent deliberadamente no la crea. El mismo mensaje aparece para
details. |
kent info: failed to open database: … | El fichero existe pero no se pudo abrir como base de datos Cordelia; lo más común es que no lo sea, o que su esquema sea más antiguo del que acepta esta compilación. |
kent info: failed to read schema version | La base de datos se abrió, pero no se pudo leer su versión de esquema. |
kent info: failed to list tables | La base de datos se abrió, pero no se pudo leer su lista de tablas. |
kent info: failed to count rows in NAME | No se pudo leer el recuento de filas de una tabla concreta. La tabla nombrada es la que falló. |
kent createdb: failed to create database | No se pudo crear el fichero: casi siempre un directorio inexistente o un problema de permisos en la ruta de destino. |
kent createdb: failed to create tables | El fichero se creó pero no se pudo escribir el esquema dentro de él. |
kent sqldump: NAME does not exist | La ruta dada a --in no está ahí. Igual que con los demás comandos, Kent
no la crea. |
kent sqldump: refusing to write the export over its own source:
NAME | --in y --out nombran el mismo fichero. Se rechaza antes de
leer nada, en lugar de truncar la base de datos que pidió exportar. |
kent files: NAME does not exist | La ruta no está ahí, y Kent no la crea; véase
files. |
kent archive: NAME does not exist | La ruta dada a --in no está ahí. Igual que con todos los demás comandos,
Kent no la crea. |
kent archive: cannot create the archive NAME | El destino dado a --out no se pudo abrir para escritura: casi siempre un
directorio inexistente o un problema de permisos. |
kent archive: cannot write NAME | No se pudo escribir un fichero en el directorio de preparación junto al destino.
Habitualmente un disco lleno: un archivo necesita sitio para sí mismo y para su
contenido preparado a la vez; véase archive. |
kent archive: cannot add NAME to the archive | No se pudo añadir al zip un fichero preparado. |
kent archive: finalising the archive failed | El zip no se pudo cerrar y completar. El archivo parcial se elimina en lugar de quedarse ahí. |
kent restore: NAME already exists | La base de datos que nombra --out ya está ahí.
restore nunca sobrescribe una, la misma regla que
sigue createdb. |
kent restore: NAME is not readable as a kent archive: … | El fichero no es un zip, o no se pudo abrir. El motivo subyacente sigue a los dos puntos. |
kent restore: NAME is not a kent archive: it has no … | Es un zip, pero le falta el manifiesto o el esquema que lleva todo archivo. |
kent restore: this archive is format version N, but this build of kent
understands version M at most | El archivo lo escribió un Kent más nuevo. Kent lo rechaza en lugar de adivinar un formato posterior a él. |
kent restore: the archive's manifest lists table "NAME" but the archive has
no … | El archivo está incompleto. Se rechaza en lugar de restaurarse en parte. |
kent restore: the archive's manifest claims N rows in "NAME" but it holds
M | El archivo se contradice a sí mismo, así que está dañado o se construyó mal. |
kent restore: the archive is inconsistent: its schema.sql stamps schema
version N but its manifest says M | Lo mismo, para la versión de esquema. |
Cuando un mensaje termina en dos puntos, el error subyacente de la base de datos lo sigue en la misma línea. Ese detalle final procede de la capa de base de datos de Cordelia, así que la misma redacción aparece en Cordelia; véase Mensajes de error de Cordelia.
La base de datos anterior a esta compilación
Este merece destacarse porque la redacción puede leerse como corrupción cuando no lo es:
$ 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
El fichero está intacto. Simplemente lo escribió una Cordelia más antigua de la que entiende esta compilación de Kent, y se rechaza al abrirlo en lugar de leerlo con un esquema que no le corresponde.
kent sqldump y
kent archive son los dos comandos que no lo rechazan.
Leer una base de datos antigua es exactamente lo que se hace antes de migrarla, así que ambos
la leen de todos modos. sqldump lo dice en la salida de error; esto es un aviso, no
un error, y el código de salida es 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
archive no imprime tal nota. En su lugar registra la versión de esquema que
encontró en el propio manifest.json del archivo, así que la información viaja
con el archivo en lugar de pasar de largo por un terminal.
Kent no tiene ningún comando que migre in situ una base de datos antigua. Leerla es la entrada de una migración, no una migración en sí; véase Exportar una base de datos con sqldump y Archivar una base de datos con archive.
Errores internos no controlados
Si algo escapa al manejo normal de errores de Kent, se informa por la salida de error y no
por la salida estándar, y el código de salida sigue siendo 1:
$ kent info /some/unreadable/path.sqlite
kent: filesystem error: ...
kent: unhandled exception of unknown type
Cualquiera de los dos merece informarse; véase Informes de errores y solicitudes de funciones, e incluya el comando exacto que ejecutó.
Véase también
- Códigos de salida
- Hoja de ruta del producto
- Obtener ayuda e información de versión
- Exportar una base de datos con sqldump
- Archivar una base de datos con archive
- Reconstruir una base de datos con restore
- Crear una base de datos con createdb
- Listar los archivos importados con files
- Mensajes de error
- Informes de errores y solicitudes de funciones