Erros no MySQL
Clique para expandir:
Causa 1: 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 consulte Informações de acesso ao banco MySQL
Causa 2: A diretiva do PHP safe_mode está habilitada (está On). Neste caso desabilite-a (deixe-a como Off). Veja como desabilitá-la aqui
Para evitar uma sobrecarga, o usuário do MySQL possui um limite de 30 conexões ao servidor nos planos Revenda, Hospedagem Expressa , Hospedagem Profissional (I, II e III), Hospedagem de sites (Basic, Plus, Business e MAX), Hospedagem Para Profissionais Web (Standard, Premium, Ultimate, Ultimate Cloud), antigo Cloud Hosting (Todos) e 70 conexões simultâneas no plano Hospedagem Profissional Premium.
Quando o seu usuário está com todas estas conexões abertas e tenta fazer mais uma conexão é apresentado esse erro.
Para ter seu problema resolvido será preciso encerrar as suas conexões abertas, veja como fazê-las acessando: Como fazer um gerenciamento avançado da sua base MySQL.
Para quem utiliza Asp
- Sugerimos que altere o driver de conexão com o banco de dados para o mais recente MySqlODBC 5.1.
Para quem utiliza Asp.Net
- Procure utilizar o driver oficial do MySql para Asp.Net(MySqlConnector). Detalhes nesta documentação: MySql com Asp.Net.
As sugestões já estão em uso ?
Caso estas sugestões já encontrem-se em uso, consulte nosso http://statusblog.locaweb.com.br/ e verifique se existe algum problema de rede(conectividade entre servidores) confirmado. Constatamos que este é um erro genérico do driver de conexão (MySqlODBC), que pode ocorrer devido a problemas de conectividade entre o servidor Web x MySql.
Quando o problema de rede estiver solucionado, basta reiniciar o pool de aplicativos do seu site conforme descrito no artigo: Como reiniciar seu Site (Pool) . Em caso de dúvidas/dificuldades, crie um chamado no HelpDesk na categoria ‘Windows – Desempenho’ solicitando verificação, no mesmo chamado informe como que a Locaweb pode reproduzir o problema. Dependendo da gravidade, utilize outros meios de contato.
ATENÇÃO
Dependendo do nível de critícidade da sua aplicação, sugerimos fortemente que analise a possibilidade de migrar sua base de dados MySql para um servidor MS SQL Server ( recomendado para sites na plataforma Windows).
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(Web.Config) e efetue novos testes.
Se estiver tudo correto no seus scripts e o problema continua ocorrendo, consulte nosso http://statusblog.locaweb.com.br/ e verifique se existe algum problema de conectividade(rede) confirmado.
Constatamos que este erro pode ocorrer devido a problemas de conectividade entre o servidor Web x MySql.
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. Você pode ajudar a evitar este problema seguindo as instruções deste link: Desempenho MYSQL.
#Lost connection to server during query
Quando você executa uma query pesada, ou seja, que demora muito tempo, pode-se deparar com este erro.
Quando isso ocorre, é preciso otimizar a sua base de dados, como no exemplo contido em: Desempenho MYSQL, ou então, analisar a possibilidade de fazer um upgrade de plano:
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.
#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.
Para resolver este erro, programe seu script para conectar-se ao banco, executar a query e encerrar a conexão.
O tempo de duração de uma conexão ociosa ao servidor é de 15 segundos.
#MySQL server has gone away
Ocorre quando se envia uma grande quantidade de dados ao servidor MySQL, que por questões operacionais e de performance, limita esta quantidade a 16 MB.
Quando collation1 e collation2 estiverem diferentes você não terá uma consulta com êxito. Para resolver, consulte Sobre collations do MySQL 4.1/5.x e como alterá-los.
#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.
#Can’t open file: tabela.myi
#Table-Corruption Issues
Ocorre quando a tabela referenciada está corrompida, você pode resolver este problema com a query:
REPAIR TABLE sua_tabela;
Pelo phpMyAdmin você pode clicar em sua base de dados à esquerda, selecionar a(s) tabela(s) a ser(em) reparada(s) e no menu dropdown abaixo Reparar tabelas / Repair tables.
A reparação excluirá todos 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.
Caso não consiga reparar a tabela, crie um chamado no HelpDesk informando:
- Quais a(s) tabela(s) a ser(em) reparada(s);
- Usuário e senha de acesso ao seu banco de dados no campo Dados Sigilosos do chamado (se preferir alterar a senha temporariamente, consulte: Definir ou alterar a senha do MySQL).
- Informar que está ciente de que a reparação excluirá dados inconsistentes.
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.
Dificilmente ocorrerá, pois serão clientes do MySQL desenvolvidos para versões antigas (até 4.0). Neste caso você deve atualizar seu programa, que deverá ter suporte à conexão ao MySQL na versão 4.1 ou superior.
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.
- MySQL 5.1 http://dev.mysql.com/doc/refman/5.1/en/full-table.html
- MySQL 5.0 http://dev.mysql.com/doc/refman/5.0/en/full-table.html
- MySQL 3.23, 4.0 e 4.1 http://dev.mysql.com/doc/refman/4.1/pt/full-table.html
Para resolver, procure excluir registros desnecessários ou dividir a tabela.
Crie um chamado no HelpDesk informando a query que tentou executar, e insira o usuário e a senha da sua base de dados no campo Dados Sigilosos, pois este erro ocorre quando há algum erro de permissão na estrutura de diretórios do MySQL.
Crie um chamado no HelpDesk ou entre em contato através de nossos canais de Atendimento.
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.
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, sugerimos que você otimize sua query e também crie index em suas tabelas, aumentando assim a performance de sua base de dados.
Caso as querys já estejam otimizadas, isso indica que sua aplicação necessita de mais recursos que o ambiente compartilhado pode oferecer, e nesse caso sugerimos um ambiente dedicado.
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.
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. Para mais informações veja a documentação oficial clicando aqui.
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.
Mais detalhes, pode conferir na documentação oficial:
http://dev.mysql.com/doc/refman/5.1/en/password-hashing.html
Veja a documentação abaixo que te auxilia a fazer a troca da senha para o novo padrão:
Veja também
Informações essenciais
- Ativando uma base MySQL inclusa no plano
- Informações de acesso ao banco MySQL
- Definir ou alterar a senha do MySQL
Informações específicas
- Criação de índice no mysql
- Manipulação de triggers no MySQL
- Como fazer um gerenciamento avançado da sua base MySQL
Backup e restore
- Como efetuar um Backup do banco MySQL via SSH
- Como efetuar um Backup do banco MySQL via phpMyAdmin
- Como restaurar um arquivo .SQL no banco MySQL via SSH
- Como restaurar um arquivo .SQL no banco MySQL via phpMyAdmin
Nossos Clientes
Conheça algumas empresas que fazem parte do nosso portifólio
Not Found
The requested URL /infraestrutura.html was not found on this server.