1. Home
  2. Hospedagem de Sites
  3. Tudo sobre as principais mensagens de erro MySQL – Hospedagem de Sites

Tudo sobre as principais mensagens de erro MySQL – Hospedagem de Sites

Informação!

Veremos neste artigo uma amostra de erros no MySQL e possibilidades de resolvê-los em sua hospedagem.

  • Vale ressaltar que a alteração sugerida deve ser feita apenas com um conhecimento prévio sobre sua aplicação. Do contrário, orientamos que procure um desenvolvedor ou técnico de confiança.
Problemas de Conexão
Too Many Conections

Ocorre quando o limite máximo de conexão do servidor foi atingido, dificilmente isso ocorrerá por conta do limite de conexão por usuários.

Lost connection to MySQL server at ’reading initial communication packet

Ocorre quando você se conecta ao servidor correto, mas especifica uma porta incorreta. A porta padrão do MySQL é a 3306, ao qual é padrão na Locaweb também.
Em alguns casos, isso pode ser problema na rede entre o servidor da aplicação e o servidor do banco de dados, portanto em casos como este você também poderá contatar-nos para verificação.

Tabelas

The table is full

Ocorre quando a tabela é muito grande, dificilmente você irá se deparar com esta mensagem, pois o limite conforme informado na documentação do MySQL (link abaixo) é muito alto.

Para resolver:

  • Procure excluir registros desnecessários ou dividir a tabela.
Table 'nome_da_tabela' doesn’t exist ou Can’t find file: 'nome_da_tabela

Ocorre quando a tabela especificada na query não existe. Este erro também ocorre se o nome da tabela conter letras maiúsculas ou minúsculas que não forem referenciadas na Query com os mesmos tipos de letras.

Quem está acostumado com SQL Server e Access sentirá essa diferença, essa é uma característica do MySQL na Locaweb, pois ele está instalado em servidores Linux exclusivos para banco de dados (clientes de hospedagens Windows que utilizam MySQL também possuem suas bases alocadas em servidores Linux), cuja característica é case-sensitive (diferenciar maiúsculas e minúsculas).

A alteração da configuração do MySQL para Case Insensitive em tabelas implicará na alteração global do servidor, o que pode causar perda de informações para outros clientes, neste caso a aquisição de um plano do tipo Servidores Dedicados será a solução se não houver a possibilidade de corrigir o nome das tabelas em sua aplicação.

MySql Error 1005: Can’t create table (errno: 150)

Este erro pode ocorrer por diversos motivos. Segue abaixo os principais:

  • Os dois campos relacionados da Foreign Key não possuem mesmo tipo ou tamanho. Por exemplo: Se um campo é INT(10) o campo da chave precisa ser INT(10) também, se for colocado INT(11) ou TINYINY já não serve. Você deve verificar esses dados usando a query SHOW CREATE TABLE tblname;. Também confirme se ambos os campos são ’signed’ ou ‘unsigned’. Conclusão, os campos devem ser EXATAMENTE o mesmo!
  • O campo do qual você deseja se referenciar em outra tabela não tem um índice (index) ou não é uma chave primária (primary key). Se um dos campos que você deseja criar a relação não for uma “primary key”, você deve criar um índice para ela.
  • O nome da Foreign Key já existe em alguma chave. Confira se o nome de sua Foreign Key é única no seu banco de dados. Simplesmente adicione alguns caracteres aleatórios no fim do nome de sua key para testar essa condição.
  • Uma ou ambas as tabelas são MyISAM. Para utilizar Foreign Key ambas as tabelas devem usar InnoDB. Normalmente quando ambas as tabelas são MyISAM o MySQL não apresenta nenhuma mensagem de erro, simplesmente não cria a chave.
  • Você pode ter especificado “CASCADE ON DELETE SET NULL”, enquanto o campo é “NOT NULL”, esse é o erro mais comum.
  • Se o seu script está funcionando perfeitamente em um server, mas não em outro, verifique o collate ou charset, eles podem dar problemas caso sejam diferentes.
  • Você pode ter um valor default (ex. default=0) na sua coluna Foreign Key.
  • O nome de sua Foreign Key excede o limite de no máximo 64 caracteres.
Problemas de Autenticação
Client does not support authentication protocol requested by server; consider upgrading MySQL client

Esse erro ocorre quando você está tentando autenticar com um client de MySQL inferior a versão 4.1, ou quando utiliza a função password em suas senhas. Em nossos servidores, a variável old-password é desabilitada por questões de segurança, portanto ou você deve realizar a atualização do client de conexão, ou alterar a sua senha para um hash longo com 41 caracteres.

Client does not support authentication protocol

Este erro acontece quando o MySQL é desenvolvido para versões antigas (4.0)

  •  Você deve atualizar seu programa, que deverá ter suporte à conexão ao MySQL na versão 5.6 ou superior.
Can't create/write to file

Crie um chamado na Central do Cliente informando a query que tentou executar, e insira o usuário e a senha da sua base de dados, pois este erro ocorre quando há algum erro de permissão na estrutura de diretórios do MySQL..

Outros problemas
Can’t connect to local MySQL server through socket'
  • O servidor MySQL roda separado do servidor WEB, por isso, não utilize o endereço LOCALHOST em seus scripts de conexão, para saber os dados de acesso ao MySQL
  • A diretiva do PHP safe_mode está habilitada. Neste caso desabilite-a. de “on” para “off”.
User SeuLogin has exceeded the 'max_user_connections' resource (current value: XX)'

Para evitar uma sobrecarga, o usuário do MySQL possui um limite de conexões ao servidor:

Planos Límite
Hospedagem I, II e III 30
Revenda 30
Hospedagem Expressa 30
Hospedagem Profissional (I, II e III) 30
Hospedagem de sites (Basic, Plus, Business e MAX), 30
Hospedagem Para Profissionais Web (Standard, Premium, Ultimate, Ultimate Cloud) 30
Hospedagem Profissional Premium 70

Quando o seu usuário está com todas estas conexões abertas e tenta fazer mais uma conexão é apresentado este erro. Para resolver:

Encerre as conexões abertas, utilizando a Query:      KILL <numero_PID>;

Provider error '8000ffff' Catastrophic failure'

Caso utilize ASP:

  • Sugerimos que altere o driver de conexão com o banco de dados

 Caso utilize Asp.net:

  • Procure utilizar o driver oficial do MySql para Asp.Net

Unable to connect to any of the specified MySQL hosts

Esta mensagem de erro pode ocorrer, caso esteja sendo utilizado o endereço (host/ip) incorreto de acesso ao servidor MySql.

  • Para resolver esta dificuldade, sugerimos que reveja se os dados de conexão com o banco encontram-se corretamente configurados no seu script ou arquivo de configuração e efetue novos testes.

Server shutdown in progress ou Lost connection to server during query

Quando você executa uma query pesada, ou seja, que demora muito tempo, pode-se deparar com este erro.

  • É preciso otimizar a sua base de dados

Server has gone away ou MySQL server has gone away

Este erro ocorre quando você demora para executar uma query após conectar-se ao servidor MySQL, por questões operacionais e de desempenho, o servidor encerra a conexão ociosa automaticamente.

  • Programe seu script para conectar-se ao banco, executar a query e encerrar a conexão.
    Obs: O tempo de duração de uma conexão ociosa ao servidor é de 15 segundos

Packet too large ou MySQL server has gone away

Ocorre quando se envia uma grande quantidade de dados ao servidor MySQL

  • Limite esta quantidade a 16 MB.
Illegal mix of collations (collation1,IMPLICIT) and (collation2,IMPLICIT) for operation

Quando collation1 e collation2 estiverem diferentes você não terá uma consulta com êxito

Warning: Table 'nome_da_tabela' is marked as crashed and should be repaired query, Can’t open file: tabela.myi ou Table-Corruption Issues

Ocorre quando a tabela referenciada está corrompida, e será preciso reparar as tabelas deletando os dados inconsistentes.

O que são dados inconsistentes?

São registros que estavam sendo inseridos (INSERT), modificados (UPDATE) ou excluídos (DELETE) no momento do corrompimento da tabela.

Você pode resolver este problema com a query:

  • REPAIR TABLE sua_tabela;
  • Clique em sua base de dados à esquerda
  • Selecione as tabelas a serem reparadas e no menu dropdown abaixo Reparar tabelas / Repair tables.

Causas que levam uma tabela ao corrompimento:

  • Conexões abertas que não são encerradas.
  • Interrupção inesperada de um serviço MySQL (pode envolver instabilidades no sistema operacional do servidor), neste caso consulte abaixo as medidas preventivas.

Medida preventiva:

  • Evite utilizar tabelas grandes (que ocupem bastante espaço), pois geralmente o tempo de resposta das operações nelas é maior, como alternativa você pode utilizar particionamento de tabelas (dividi-las).
  • Utilize InnoDB caso seja uma tabela que tenha muitos INSERTS, UPDATES e DELETES, pois são tabelas que tendem à ser grandes, além de muito utilizadas.

Obs: MyISAM é mais rápido somente para SELECTS, além de retornar o número de registros com precisão, o InnoDB também retorna as consultas de forma precisa, porém é mais demorado e não tem contagem exata do total de registros. InnoDB além de ser mais seguro, suporta transações e rollback.

1030 - Got error 28 from storage engine

Crie um chamado na Central do Cliente ou entre em contato através de nossos canais de Atendimento.

Can’t initialize character set

Este erro acontece quando você tenta utilizar charsets que não existem.

  • Verifique se você configurou o charset corretamente nas queries ou em seu software de conexão ao banco, os mais utilizados são “latin1” e “utf8”, mas em alguns softwares os charsets são automáticos. Consulte a documentação de seu software para obter mais detalhes.

The SELECT would examine more than MAX_JOIN_SIZE rows; check your WHERE and use SET SQL_BIG_SELECTS=1 or SET SQL_MAX_JOIN_SIZE=# if the SELECT is okay

Este erro ocorre quando o banco de dados precisa procurar em mais de 1 milhão de linhas, para atender os requisitos de sua consulta. Essa limitação não diz respeito a quantidade de registros em uma tabela e sim, em quantos registros serão lidos para satisfazer uma consulta sendo assim, em uma tabela sem a devida otimização o mysql pode fazer várias consultas para atender ao resultado de uma query, a adição de índices, faz com que o mysql vasculhe menos registros.
Para solucionar o erro em questão:

  • Otimize sua query e também crie index em suas tabelas, aumentando assim a performance de sua base de dados.
Lost connection to MySQL server at 'reading authorization packet

A Locaweb, preocupada com a segurança, configurou uma regra aplicada nos servidores Linux que impede que os sites nessa plataforma troquem pacotes com um banco de dados externo se a autenticação nesse banco for por meio de um usuário com nome root. A regra não se aplica somente a bancos de dados externos, mas a qualquer serviço externo que use o usuário root para autenticar. Nesse tipo de caso o servidor Linux irá derrubar a conexão com o serviço externo e pode aparecer em seu site o erro:

Warning: mysql_connect() [function.mysql-connect]: Lost connection to MySQL server at ‘reading authorization packet’

Se você precisa que seu site conecte em uma base de dados Mysql externa, e precisa que a autenticação seja feita através de um super usuário(não recomendado), ao invés de usar o usuário root pode criar um outro usuário com super privilégios. Apesar de não prestarmos suporte a esse procedimento ai vai a dica: você só precisar criar uma entrada na tabela user com os campos de privilégios configurados para ‘Y’. Não é necessário gerar entradas nas tabelas db ou host.

Access denied for user 'xx'@'yyyy' (using password: YES); consider upgrading MySQL client ou ERROR 1045 (28000): Access denied for user 'xx'@'yyyy' (using password: YES)

Conheça!

Agora que você já viu os principais mensagens de erros do MySQL, confira nosso serviço de Clic Lead!

Este artigo foi útil ?

Artigos relacionados