Erro 1146 MySQL: tabela não existe, como resolver
Entenda o erro 1146 do MySQL, confira o banco em uso, liste as tabelas com SHOW TABLES e veja por que maiúsculas e minúsculas contam no Linux.
Por Redação Eleven Host · @robson.direitodigital · 29 de outubro de 2026 · 7 min de leitura

Capa da Redação Eleven Host para o guia: Erro 1146 MySQL: tabela não existe, como resolver Arte: Eleven Host
O erro 1146 MySQL, "Table doesn't exist", aparece quando uma consulta pede uma tabela que o servidor não encontra no banco em uso. Segundo o manual do MySQL 8.4, a mensagem traz o nome do banco e o da tabela, e os dois precisam ser conferidos.
Este guia mostra o que o erro significa, como ler a mensagem, como checar o banco selecionado e os nomes das tabelas com comandos SQL padrão e por que maiúsculas e minúsculas fazem diferença entre Windows e Linux. Os fatos vêm do manual do MySQL 8.4. Os exemplos usam nomes fictícios. Se o seu banco roda numa VPS, o guia completo de servidor VPS explica o que fica por sua conta.
O que o erro 1146 significa
No manual de erros do MySQL 8.4, o código 1146 tem o símbolo ER_NO_SUCH_TABLE, o estado SQL 42S02 e a mensagem Table '%s.%s' doesn't exist. Um exemplo do próprio manual:
ERROR 1146 (42S02): Table 'test.no_such_table' doesn't exist
Em português simples: o servidor entendeu a consulta, mas não achou, no banco indicado, uma tabela com aquele nome. A senha e a conexão estão funcionando; o que falta é a tabela, ou o nome dela, ou o banco certo.
Como ler a mensagem: banco.tabela
A mensagem mostra dois nomes separados por um ponto: primeiro o banco, depois a tabela. No exemplo acima, test é o banco e no_such_table é a tabela. Confira os dois. Às vezes a tabela existe, mas em outro banco, e o erro vem de a consulta estar apontando para o banco errado.
No erro 1146, leia a mensagem inteira: o servidor informa o banco e a tabela que ele procurou, e a causa pode estar na diferença entre esse nome e o que existe.
Passo a passo para diagnosticar
Estes comandos SQL padrão ajudam a descobrir onde está a diferença. Rode no cliente mysql ou na ferramenta que você usa:
- Veja qual banco está em uso:
SELECT DATABASE(); - Liste os bancos disponíveis:
SHOW DATABASES; - Selecione o banco que deveria ser usado:
USE nome_do_banco; - Liste as tabelas dele:
SHOW TABLES; - Procure por parte do nome:
SHOW TABLES LIKE 'nome%';
Compare o resultado com o nome que aparece na mensagem de erro. Se a tabela está na lista com outro nome, o problema é de digitação ou de prefixo. Se ela não aparece em nenhum banco, ela pode não ter sido criada naquele servidor.
Precisa de um servidor próprio para o seu banco? A VPS Plano Bronze sai a partir de R$ 17,00/mês; confira na loja o que o plano inclui. Ver planos de VPS
Causas práticas do erro 1146
Estas são possibilidades a verificar, e não uma lista de frequência. Vale testar uma de cada vez:
- Banco errado selecionado: o banco que está na string de conexão da aplicação, ou o selecionado com
USE, não é aquele onde a tabela existe. - Nome digitado diferente: a diferença pode estar numa letra maiúscula ou num prefixo. Aplicações como o WordPress usam um prefixo de tabela definido na instalação, e a consulta precisa usar o mesmo prefixo.
- Tabela não criada: a importação do banco pode ter falhado no meio, ou nem ter sido feita. Veja o guia Importar banco de dados MySQL: passo a passo e erros comuns.
- Site migrado de Windows para Linux: os nomes escritos com maiúsculas podem se comportar de outro jeito, como explica a próxima seção.
Maiúsculas e minúsculas nos nomes de tabela
O manual do MySQL 8.4 explica que o nome da tabela é tratado de forma diferente conforme o sistema operacional:
- no Windows, nomes de tabela não diferenciam maiúsculas de minúsculas;
- na maioria dos sistemas Unix, diferenciam; a exceção é o macOS, em que o sistema de arquivos padrão (HFS+) não diferencia.
Esse comportamento é controlado pela variável lower_case_table_names, cujo valor padrão é 0 no Unix, 1 no Windows e 2 no macOS. Os valores significam:
- 0: o nome é guardado como foi escrito e comparado com diferença entre maiúsculas e minúsculas;
- 1: o nome é guardado em minúsculas e comparado sem diferença entre maiúsculas e minúsculas;
- 2: valor para sistemas de arquivos que não diferenciam maiúsculas de minúsculas, como o macOS.
Um ponto importante: o manual diz que essa variável só pode ser configurada quando o servidor é inicializado, e que mudar o valor depois é proibido. Por isso, ela não é um ajuste rápido para corrigir um erro 1146 em um servidor que já está em uso.
O que fazer ao migrar de Windows para Linux
Se você trouxe um banco do Windows para um servidor Linux e a tabela existe, mas o erro continua, compare como o nome está escrito no banco e na consulta. O manual recomenda usar nomes de tabela em minúsculas. Para levar tabelas entre plataformas, ele cita como opção o lower_case_table_names=1 em todos os sistemas.
Para fazer a cópia com segurança antes de qualquer mudança, o guia Backup MySQL com mysqldump: como fazer e restaurar mostra como gerar o backup com mysqldump, e o Importar banco de dados MySQL: passo a passo e erros comuns mostra como importá-lo.
Entenda
Roteiro rápido para o erro 1146:
- Leia na mensagem o banco e a tabela procurados.
- Rode
SELECT DATABASE();para ver o banco em uso. - Use
SHOW TABLES;eSHOW TABLES LIKE 'nome%';para ver os nomes que existem. - Confira maiúsculas, minúsculas e o prefixo da aplicação.
- Se a tabela não existe, verifique se a importação terminou.
Se o erro for de outro tipo
Se o seu erro for de outro tipo: se a mensagem for de sintaxe, veja o Erro 1064 MySQL: erro de sintaxe SQL, como resolver. Se for de acesso negado, veja o Erro 1045 MySQL: Access denied for user, como resolver. Se o problema for a conexão com o servidor, veja o Erro 2002 MySQL: não conecta ao servidor, como resolver. Para dar permissões a um usuário no banco, há o Criar usuário MySQL: como dar permissões com GRANT.
Em sites que mostram a frase "Erro ao estabelecer conexão com o banco de dados", o caso é diferente do 1146 e tem o seu guia: Erro ao estabelecer conexão com o banco de dados: solução.
Como evitar o erro 1146 no futuro
- Use nomes de tabela em minúsculas: é a recomendação do manual do MySQL 8.4.
- Anote o prefixo de tabela da aplicação: ele é definido na instalação e precisa ser o mesmo nas consultas.
- Confira o banco na string de conexão: um nome de banco trocado leva a procurar as tabelas no lugar errado.
- Termine a importação antes de usar o site: uma importação interrompida pode deixar tabelas sem criar.
- Faça backup antes de migrar: assim, se o nome das tabelas mudar de comportamento no novo sistema, você tem a cópia original.
Procura um serviço de banco de dados? O 11SQL Mini sai a partir de R$ 9,90/mês; confira na loja o que cada plano inclui. Ver planos de banco de dados
Perguntas frequentes
O que significa "Table doesn't exist" no MySQL?
Significa que o servidor não encontrou, no banco indicado, uma tabela com o nome pedido pela consulta. A mensagem traz o banco e a tabela procurados, no formato banco.tabela.
Como saber em qual banco estou?
Rode SELECT DATABASE();. O resultado mostra o banco selecionado. Para trocar, use USE nome_do_banco;.
Maiúsculas e minúsculas importam no nome da tabela?
Depende do sistema. No Windows, os nomes de tabela não diferenciam maiúsculas de minúsculas; na maioria dos sistemas Unix, diferenciam. O manual recomenda usar nomes em minúsculas.
Posso mudar o lower_case_table_names para resolver?
Essa variável só pode ser configurada quando o servidor é inicializado, e mudar o valor depois é proibido, segundo o manual do MySQL 8.4. Para levar tabelas entre plataformas, o manual cita o valor 1 em todos os sistemas como uma opção.
A tabela existe no meu backup, mas o erro continua. O que olhar?
Confira se a importação terminou, se o banco selecionado é o certo e se o nome da tabela, com o prefixo, está escrito exatamente como na consulta.