PDOException: SQLSTATE[HY000] – causas e como resolver em PHP

O erro PDOException: SQLSTATE[HY000] é um dos mais comuns em aplicações PHP que utilizam banco de dados via PDO.

Esse erro indica um problema genérico de banco de dados, podendo estar relacionado à conexão, consulta SQL, permissões ou configuração do servidor.

Se você também enfrenta erros como 500 Internal Server Error ou erro de permissão em pastas PHP, veja estes guias:

O que significa o erro SQLSTATE[HY000]

O código HY000 indica um erro geral do banco de dados, ou seja, o PDO não conseguiu classificar o problema de forma específica.

Por isso, é fundamental analisar a mensagem completa da exceção.

---

Principais causas do PDOException SQLSTATE[HY000]

Erro de conexão com o banco de dados

Credenciais incorretas, host errado ou banco inexistente geram esse erro imediatamente.

---

Consulta SQL inválida

Erros de sintaxe, colunas inexistentes ou tabelas erradas podem disparar a exceção.

---

Problema de permissões no banco

O usuário do banco pode não ter permissão para executar SELECT, INSERT, UPDATE ou DELETE.

---

Timeout ou falha de comunicação

Problemas de rede ou banco indisponível podem resultar em erro HY000.

---

Driver PDO incorreto ou ausente

Se o driver do banco não estiver instalado, o PDO não consegue se conectar.

---

Como identificar a causa do erro PDOException

Exibir a mensagem completa da exceção

try {
    $pdo = new PDO($dsn, $user, $pass);
} catch (PDOException $e) {
    echo $e->getMessage();
}

A mensagem detalhada normalmente indica a origem do problema.

---

Ativar modo de erro por exceção

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
---

Testar a conexão isoladamente

Crie um script simples apenas para testar a conexão com o banco.

---

Como resolver o erro SQLSTATE[HY000] em PHP

Verificar credenciais e host

---

Revisar a consulta SQL

Teste a query diretamente no banco antes de executá-la no PHP.

---

Conferir permissões do usuário do banco

Garanta que o usuário tenha permissão adequada nas tabelas.

---

Verificar driver PDO instalado

Confira no phpinfo() se o driver do banco está habilitado.

---

Evitar erro 500 ao tratar exceções

Se a exceção não for tratada, o erro pode gerar um 500 Internal Server Error.

Veja também: Como resolver erro 500 e 404 em sites PHP .

---

Exemplo de tratamento correto com try/catch

try {
    $stmt = $pdo->prepare("SELECT * FROM usuarios");
    $stmt->execute();
} catch (PDOException $e) {
    error_log($e->getMessage());
    echo "Erro ao acessar o banco de dados.";
}
---

Boas práticas ao usar PDO em PHP

---

Conclusão

O erro PDOException: SQLSTATE[HY000] indica um problema genérico no acesso ao banco de dados, mas na maioria dos casos pode ser resolvido com uma análise cuidadosa da exceção.

Com boas práticas e tratamento correto, é possível evitar falhas críticas e manter a aplicação PHP estável.