SQLite
Coleta SQLITE e Entrega SQLITE_EXEC. Diferente dos outros três, não há servidor: a conexão é o
caminho de um arquivo.
Conexão
Não há host, porta nem usuário — a conexão é o caminho do .db como o servidor do CMS o enxerga
(em container, dentro de um volume montado). O controle de acesso é o do filesystem, e por isso este
é o único dos quatro tipos sem nenhum campo de senha.
Opções próprias da conexão:
| Opção | Para que serve |
|---|---|
| Somente leitura | Abre o banco sem permissão de escrita. Uma Entrega (ou comando pós-coleta) nessa conexão falha em vez de gravar — use quando outro sistema é o dono do arquivo |
| Criar arquivo se não existir | Desligado, um caminho inexistente é erro. Ligado, o CMS cria o banco — use só quando ele é o dono |
| Modo WAL | Desligado por padrão. Permite leitores simultâneos a um gravador. Fica gravado no próprio arquivo e vale para os outros processos que o abrirem — inclusive depois de você desligar a opção aqui |
| Tempo de espera pelo lock | Quanto uma execução espera pela liberação da escrita antes de falhar com database is locked |
O SQLite aceita um gravador por vez no arquivo inteiro (não por linha ou tabela). Coletas e
Entregas frequentes no mesmo .db, ou um processo externo gravando junto, disputam esse lock —
dimensione o tempo de espera e considere o WAL. Evite .db em compartilhamento de rede (SMB/NFS):
o travamento depende de garantias que esses sistemas de arquivos não oferecem.
O WAL é opt-in explícito, e não o padrão. Ele exige memória compartilhada — um arquivo -shm
mapeado — que compartilhamento de rede, alguns sistemas de arquivos de container e volumes montados
de fora não oferecem. Ligado num meio desses, o banco falha com um erro de I/O cru do driver, que
não ajuda ninguém a entender o que houve. Por isso o padrão é o modo tradicional, e quando o erro
acontece o CMS o traduz, dizendo que o WAL é o suspeito e onde desligá-lo.
Como todo banco é um arquivo, comandos que alcançam outros arquivos ou o próprio motor —
ATTACH, VACUUM INTO, PRAGMA, load_extension — são bloqueados nos campos de Coleta e
Entrega, junto do DDL/DCL já barrado nos outros dialetos.
Vocabulário bloqueado neste dialeto
Além do DDL/DCL barrado em todos os dialetos, este bloqueia:
ATTACH, DETACH, PRAGMA, VACUUM, REINDEX, LOAD_EXTENSION, READFILE, WRITEFILE
A checagem completa — verbo inicial, statements encadeados e neutralização de comentários e literais — está em o que o CMS bloqueia nos campos SQL.
O comportamento comum aos quatro bancos — modos de resultado, marcação do que já foi lido e placeholders — está em Bancos de dados.