Moodle "Error reading from database": causas e como resolver

"Error reading from database" (ou, em português, "Erro ao ler a base de dados") é uma das mensagens mais buscadas sobre Moodle. Ela assusta, mas diz pouco: só avisa que uma consulta ao banco de dados falhou. O motivo real fica escondido.
A boa notícia: quase sempre dá para descobrir a causa em minutos, se você souber onde olhar.
Primeiro passo: enxergar o erro real
Sem depuração, o Moodle mostra só a mensagem genérica. Para ver qual consulta falhou e por quê:
- Entre como administrador e vá em Administração do site > Desenvolvimento > Depuração.
- Escolha o nível de desenvolvedor e marque para exibir as mensagens.
- Repita a ação que deu erro. Agora aparece a mensagem do banco, com a tabela e a consulta envolvidas.
Se nem a administração abre, as mesmas opções podem ser ligadas no config.php. Desative a depuração depois: ela expõe detalhes técnicos para qualquer usuário.
As causas mais comuns
1. Tabela ou coluna faltando depois de um upgrade
Um upgrade interrompido ou um plugin atualizado pela metade deixa o código esperando uma tabela que não existe. O erro aparece como tabela ou coluna desconhecida. A correção é concluir o upgrade em Administração do site > Notificações ou reinstalar o plugin na versão certa. Por isso insistimos em upgrade com etapas testadas.
2. Plugin incompatível com a versão
Plugins antigos podem usar consultas que não funcionam na versão nova do Moodle ou do banco. Se o erro aparece só numa atividade ou num bloco, o suspeito é o plugin. Confira a compatibilidade no diretório oficial antes de atualizar. Veja os cuidados com plugins.
3. Tabela corrompida
Quedas de energia ou do servidor durante uma gravação podem corromper tabelas, principalmente em bancos MySQL e MariaDB. O banco tem ferramentas de verificação e reparo, mas use só com backup feito.
4. Disco cheio ou banco no limite
Sem espaço em disco, o banco não consegue gravar tabelas temporárias e consultas grandes falham. Relatórios pesados e páginas com muitas consultas também batem em limites do servidor. Se o problema é conexão, e não leitura, veja o caso do "Database connection failed".
5. Versão do banco abaixo do mínimo
Cada versão do Moodle exige uma versão mínima de MariaDB, MySQL ou PostgreSQL. Atualizar o Moodle sem atualizar o banco gera erros de leitura em pontos aleatórios. Confira os requisitos nas versões do Moodle.
O que não fazer
- Apagar tabelas ou registros "que parecem sobrando" sem saber o que são.
- Esconder o erro em vez de corrigir. Já vimos onde isso termina: plugins falhando em loop por baixo de erros escondidos.
- Mexer no banco sem backup do banco e da pasta moodledata.
Perguntas frequentes
O que significa "Error reading from database" no Moodle?
Significa que uma consulta ao banco de dados falhou. A mensagem é genérica: o erro real só aparece com o modo de depuração ativado ou nos logs do servidor.
Como ver o erro real por trás da mensagem?
Ative a depuração em Administração do site > Desenvolvimento > Depuração, no nível de desenvolvedor, ou adicione as linhas de debug no config.php. Desative logo depois de identificar o problema.
"Error reading from database" é o mesmo que "Database connection failed"?
Não. "Database connection failed" indica que o Moodle nem conseguiu conectar ao banco. "Error reading from database" indica que conectou, mas uma consulta específica falhou.
Posso perder dados com esse erro?
O erro em si não apaga dados, mas mexer no banco sem backup pode. Antes de qualquer correção, faça backup do banco e da pasta moodledata.