Mensagens de erro do Cloud SQL para MySQL

Esta página aborda algumas das mensagens de erro encontradas no Cloud SQL.

Vista geral

As mensagens de erro no Cloud SQL provêm de várias origens e aparecem em vários locais. Algumas mensagens de erro provêm dos próprios motores de base de dados, algumas do serviço Cloud SQL, algumas das aplicações cliente e algumas são devolvidas por chamadas à API Admin do Cloud SQL.

Esta página inclui alguns dos erros mais comuns observados no Cloud SQL. Se não encontrar o código ou a mensagem de erro que procura aqui, pode procurar material de referência da fonte aqui:

Se não encontrar o material de referência para a mensagem de erro que está a ver, também pode pesquisar em alguns destes locais onde outros utilizadores podem ter experiência relevante:

Erros operacionais

A | B | C | D | E | F | G | I | L | M | N | O | P | Q | R | S | T | U | W

Mensagem de erro Resolução de problemas
Ligação xxx anulada à base de dados: DB_NAME. A aplicação não está a terminar as ligações corretamente.

Verifique as seguintes condições:

  • A aplicação não chamou mysql_close() antes de sair.
  • Erros de comunicação.
  • A aplicação pode ter estado inativa durante mais do que o número de segundos especificado em `wait_timeout` ou `interactive_timeout` sem emitir pedidos para o servidor. Consulte a secção 5.1.7, Variáveis do sistema do servidor.
  • A aplicação terminou abruptamente a meio de uma transferência de dados.
  • O valor da variável max_allowed_packet pode ser demasiado pequeno ou as consultas requerem mais memória do que a alocada para o mysqld. Este problema pode ser resolvido aumentando a flag max_allowed_packet para um número muito maior.
Acesso recusado. Precisa de (pelo menos um dos) privilégios SUPER para esta operação. Pode existir uma vista, uma função ou um procedimento na base de dados de origem que faça referência a DEFINER de uma forma não suportada pelo Cloud SQL.

Atualize o definidor nas bases de dados externas, por exemplo, de root@localhost para root@% ou um utilizador que não seja superutilizador. Consulte o artigo Controlo de acesso a objetos armazenados para mais informações.

Acesso recusado para o utilizador "XXX"@"XXX" (a usar a palavra-passe: XXX) Existem várias causas possíveis, incluindo:
  • O nome de utilizador (ou a palavra-passe) está incorreto.
  • O utilizador está a estabelecer ligação a partir de um URL diferente de @XXX.
  • O utilizador não tem os privilégios corretos para a base de dados à qual está a tentar estabelecer ligação.

Experimente estas ações…

  • Valide o nome de utilizador e a palavra-passe correspondente.
  • Verifique a origem da ligação para ver se corresponde ao URL onde o utilizador tem privilégios de acesso.
  • Verifique os privilégios de concessão do utilizador na base de dados.
O intervalo de IPs atribuído não foi encontrado na rede. As interligações de VPC não foram atualizadas depois de um intervalo atribuído ter sido modificado ou removido.

Tem de modificar a ligação privada. Use o seguinte comando e certifique-se de que usa o argumento --force:

gcloud services vpc-peerings update \
--network=VPC_NETWORK \
--ranges=ALLOCATED_RANGES \
--service=servicenetworking.googleapis.com \
--force
ANY command denied to user 'root'@'%' for table ... O utilizador não tem todas as autorizações necessárias para esta operação.

Experimente o seguinte:

  1. Ligue-se à base de dados (por exemplo, através da Cloud Shell) e inicie sessão como root.
  2. Executar USE mysql;.
  3. Conceda as seguintes autorizações através da sintaxe:
    GRANT PERMISSION_1,PERMISSION_2 ON *.* TO 'root' WITH GRANT OPTION;
       
    • SELECIONAR
    • INSERIR
    • ATUALIZAR
    • ELIMINAR
    • CRIAR
    • LARGAR
    • ATUALIZAR
    • SHUTDOWN
    • PROCESS
    • REFERÊNCIAS
    • INDEX
    • ALTER
    • MOSTRAR BASES DE DADOS
    • CRIE TABELAS TEMPORÁRIAS
    • LOCK TABLES
    • EXECUTE
    • REPLICATION SLAVE
    • CLIENTE DE REPLICAÇÃO
    • CRIAR VISTA
    • MOSTRAR VISTA
    • CRIAR ROTINA
    • ALTERAR ROTINA
    • CRIAR UTILIZADOR
    • EVENTO
    • ACIONADOR
    • CREATE TABLESPACE
  4. Execute USE 'Database_Name'; onde Database_Name é a base de dados onde está a criar as vistas.
  5. Executar todas as visualizações de criação na sessão e confirmar.
Mensagem de erro Resolução de problemas
Pedido inválido. Esta mensagem pode ter várias causas. Illegal Argument é um dos mais comuns. Neste caso, o pedido está a usar o argumento errado ou um valor inválido para o argumento. Para as muitas outras causas, a mensagem de erro pode conter uma sugestão útil.

Para Illegal Argument, verifique o pedido para se certificar de que cada argumento é permitido e que cada valor do argumento é válido. Para todas as outras causas, verifique os ficheiros de registo para ver se existem mais informações.

Mensagem de erro Resolução de problemas
Não é possível modificar intervalos atribuídos em CreateConnection. Use UpdateConnection. As interligações de VPC não foram atualizadas depois de um intervalo atribuído ter sido modificado ou removido.

Tem de modificar a ligação privada. Use o seguinte comando e certifique-se de que usa o argumento --force:

gcloud services vpc-peerings update \
--network=VPC_NETWORK \
--ranges=ALLOCATED_RANGES \
--service=servicenetworking.googleapis.com \
--force
Constraints/sql.restrictAuthorizedNetworks. A operação de clonagem está bloqueada pela configuração Authorized Networks. Authorized Networks estão configurados para endereços IP públicos na secção Conetividade da consola Trusted Cloud e a clonagem não é permitida devido a considerações de segurança.

Remova todas as entradas de Authorized Networks da instância do Cloud SQL, se possível. Caso contrário, crie uma réplica sem entradas Authorized Networks.

Mensagem de erro Resolução de problemas
O disco está cheio. O tamanho do disco da instância principal pode ficar cheio durante a criação da réplica.

Edite a instância principal para a atualizar para um tamanho de disco maior.

Mensagem de erro Resolução de problemas
Não foi possível criar a sub-rede. Não existem mais endereços disponíveis no intervalo de IP.

Não foi possível encontrar blocos livres nos intervalos de IP atribuídos. Atribua novos intervalos a este fornecedor de serviços.

Não existem mais endereços disponíveis no intervalo de IP atribuído.

Considere estes possíveis cenários:

  • O tamanho do intervalo de IP atribuído para a ligação de serviço privada é inferior a /24.
  • A dimensão do intervalo de IP atribuído para a ligação de serviço privado é demasiado pequena para o número de instâncias do Cloud SQL.
  • O requisito relativo ao tamanho do intervalo de IPs atribuído é maior se as instâncias forem criadas em várias regiões. Veja a dimensão do intervalo atribuído

Para cada um dos cenários acima, pode optar por expandir o intervalo de IP existente ou atribuir um intervalo de IP adicional à ligação de serviço privado.

Se estiver a atribuir um novo intervalo, tenha cuidado para não criar uma atribuição que se sobreponha a atribuições existentes.

Depois de criar um novo intervalo de IPs, atualize o peering de VPC com o seguinte comando:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com
--ranges=OLD_RESERVED_RANGE_NAME,NEW_RESERVED_RANGE_NAME \
--network=VPC_NETWORK
--project=PROJECT_ID \
--force

Se estiver a expandir uma atribuição existente, tenha cuidado para aumentar apenas o intervalo de atribuição e não o diminuir. Por exemplo, se a atribuição original for 10.0.10.0/24, faça a nova atribuição, pelo menos, em 10.0.10.0/23.

Em geral, se começar com uma atribuição /24, diminuir a máscara em 1 para cada condição (grupo de tipo de instância adicional, região adicional) é uma boa regra geral. Por exemplo, se tentar criar ambos os grupos de tipos de instâncias na mesma atribuição, passar de /24 para /23 é suficiente.

Depois de expandir um intervalo de IPs existente, atualize a interligação de VPC com o seguinte comando:

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com
--ranges=RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID \
--force
Mensagem de erro Resolução de problemas
(gcloud.sql.connect) Parece que o seu cliente não tem conetividade IPv6 e a instância da base de dados não tem um endereço IPv4. Está a tentar estabelecer ligação à sua instância de IP privado através do Cloud Shell.

A ligação do Cloud Shell a uma instância com apenas um endereço IP privado não é suportada atualmente.

Got packet bigger than max_allowed_packet bytes when dumping table. O pacote era maior do que o permitido pelas definições.

Use mysqldump com a opção max_allowed_packet.

Para saber mais sobre a utilização de flags mysqldumppara a migração de importações geridas, consulte o artigo Flags de sincronização inicial permitidas e predefinidas

Mensagem de erro Resolução de problemas
InnoDB: Write to file ./ibtmp1 failed at offset XXXX, YYYY bytes should have been written, only 0 were written. A instância atingiu um limite rígido ao fazer uma cópia de segurança automática.

Verifique se o seu SO e sistema de ficheiros suportam ficheiros deste tamanho. Verifique se o disco não está cheio ou fora da quota de disco. Pode pedir um aumento das suas quotas na Trusted Cloud consola ou editar a instância para a atualizar para um tamanho de disco maior.

Erro interno. O projeto pode não ter a conta de serviço de rede de serviços necessária para esta funcionalidade.

Para reparar as autorizações de serviço, desative a opção Service Networking API, aguarde cinco minutos e, em seguida, volte a ativá-la.

Pedido inválido: configuração de rede de serviços incorreta para a instância. O serviço Service Networking API não está ativado no projeto.

Ative a Service Networking API no seu projeto. Se vir este erro quando estiver a tentar atribuir um endereço IP privado a uma instância do Cloud SQL e estiver a usar uma VPC partilhada, também tem de ativar a Service Networking API para o projeto anfitrião.

Mensagem de erro Resolução de problemas
Tabela de metadados bloqueada. Outra consulta, processo ou transação está a bloquear a sua consulta e bloqueou a tabela.

Encontre o processo que bloqueou a tabela e pare-o:

  1. Diagnostique com: sql> show processlist;

    O primeiro item na lista pode ser o que está a bloquear, e os itens seguintes estão a aguardar.

  2. O comando SHOW INNODB STATUS também pode ser útil.
  3. Execute o comando KILL <var>PID</var>.
Mensagem de erro Resolução de problemas
Falha na associação de rede. O Service Networking API não está ativado no projeto.

Ative a Service Networking API no seu projeto. Se vir este erro quando estiver a tentar atribuir um endereço IP privado a uma instância do Cloud SQL e estiver a usar uma VPC partilhada, também tem de ativar a Service Networking API para o projeto anfitrião.

Mensagem de erro Resolução de problemas
A operação falhou porque já estava outra operação em curso. A maioria das operações no Cloud SQL são síncronas. Só pode executar uma de cada vez.

Aguarde que a operação anterior termine antes de iniciar outra.

A operação não é válida para esta instância. Este erro é devolvido por uma chamada API para instances.restoreBackup e significa que não pode restaurar a partir da cópia de segurança para uma instância com um tamanho de armazenamento (XX GB) inferior ao tamanho da cópia de segurança (YY GB).

Edite a instância de destino para aumentar o respetivo tamanho de armazenamento.

Mensagem de erro Resolução de problemas
Quota ultrapassada. Atingiu o limite da sua quota por minuto ou diária. Reveja as quotas e os limites do Cloud SQL.

Peça um aumento das suas quotas a partir da Trusted Cloud consola.

Mensagem de erro Resolução de problemas
Os restantes slots de ligação estão reservados. O número máximo de associações permitidas foi atingido.

Aumentar o valor da flag max_connections. Consulte o artigo Configurar flags da base de dados.

O pedido não tem uma chave da API válida. Pode não ter um ficheiro JSON de chave de conta de serviço válido ou este pode não estar armazenado na localização esperada.

Verifique se tem um ficheiro JSON de chave da conta de serviço válido na localização armazenada na variável de ambiente GOOGLE_APPLICATION_CREDENTIALS e se a variável aponta para a localização correta.

Mensagem de erro Resolução de problemas
A chave especificada era demasiado longa. O comprimento máximo da chave é de 767 bytes. A instância principal externa pode ter a variável innodb_large_prefix definida.

Defina a flag innodb_large_prefix como ON quando criar a réplica ou atualize a réplica existente com a flag.

Erro de SSL: preenchimento inválido. Erro de certificado do servidor.

Crie um novo certificado do servidor e faça a rotação.

Ocorreu um erro do sistema.
  • O utilizador pode não ter todas as autorizações do Cloud Storage de que precisa.
  • A tabela da base de dados pode não existir.

Experimente estas ações…

  • Verifique se tem, pelo menos, autorizações WRITER no contentor e autorizações READER no ficheiro de exportação. Para mais informações sobre a configuração do controlo de acesso no Cloud Storage, consulte o artigo Crie e faça a gestão de listas de controlo de acesso
  • Certifique-se de que a tabela existe. Se a tabela existir, confirme que tem as autorizações corretas no contentor de armazenamento.

Mensagem de erro Resolução de problemas
A definição da tabela foi alterada. Durante o processo de exportação, ocorreu uma alteração na tabela.

A transação de despejo pode falhar se usar as seguintes declarações durante a operação de exportação:

  • ALTER TABLE
  • CREATE TABLE
  • DROP TABLE
  • RENAME TABLE
  • TRUNCATE TABLE

Remova qualquer uma destas declarações da operação de despejo.

A tabela db.table não existe Se uma ou mais tabelas InnoDB desapareceram após um reinício do MySQL e o registo de erros do MySQL tiver os seguintes avisos ao mesmo tempo, deve-se ao facto de as colunas de chaves estrangeiras e chaves referenciadas estarem dessincronizadas.
[Warning] InnoDB: Load table db.table failed, the table has missing
foreign key indexes. Turn off 'foreign_key_checks' and try again.
[Warning] InnoDB: Cannot open table db/table from the internal data
dictionary of InnoDB though the .frm file for the table exists.
See InnoDB troubleshooting
for more information.
      

Após um reinício da base de dados, o MySQL tem de carregar tabelas na cache do dicionário do InnoDB no primeiro acesso. Se detetar a discrepância, o sistema bloqueia o acesso a essa tabela.

mysql> select * from db.table;
ERROR 1146 (42S02): Table db.table doesn't exist
      

Desativar o foreign_key_checks para a sessão do MySQL permite o acesso à tabela novamente. Depois de aceder à tabela e de a carregar na cache do dicionário, o InnoDB não verifica nem reclama de uma incompatibilidade de chave externa até ao próximo reinício da base de dados

A incompatibilidade de chaves estrangeiras deve ser corrigida para evitar problemas futuros.

  1. Desative o foreign_key_checks para a sessão do cliente mysql e aceda à tabela.
    mysql> SET SESSION FOREIGN_KEY_CHECKS=0;
                
  2. Inspecione as tabelas principal e secundária e identifique as incompatibilidades entre a chave externa e as colunas de chaves referenciadas.
    mysql> SHOW CREATE TABLE parent_table;
    mysql> SHOW CREATE TABLE child_table;
                

    Verifique se as colunas correspondentes têm tipos de dados semelhantes. O tamanho e o sinal dos tipos de precisão fixa, como INTEGER e DECIMAL, são iguais. Para colunas de strings não binárias (carateres), o conjunto de carateres e a ordenação têm de ser os mesmos.

  3. Corrija a incompatibilidade através da declaração ALTER TABLE. Algumas operações podem exigir que elimine primeiro a restrição de chave externa, aplique a alteração e, em seguida, adicione novamente a chave externa.
  4. Reative o foreign_key_checks novamente.
    mysql> SET SESSION FOREIGN_KEY_CHECKS=1;
                
(Limite de tempo excedido) durante a exportação. Os formatos CSV e SQL são exportados de forma diferente. O formato SQL inclui toda a base de dados e é provável que demore mais tempo a ser concluído.

Use o formato CSV e execute várias tarefas de exportação mais pequenas para reduzir o tamanho e a duração de cada operação.

Demasiadas associações. Definir o valor da flag max_connections demasiado elevado pode causar este erro. Isto também pode ser causado pela ativação de uma flag fora da sequência.

Diminua o valor da flag max_connections ou contacte o apoio ao cliente para pedir a remoção da flag, seguida de um hard drain. Isto força o reinício da instância num anfitrião diferente com uma configuração nova, sem a flag nem a definição.

Mensagem de erro Resolução de problemas
Não autorizado a estabelecer ligação. Existem várias causas, uma vez que a autorização ocorre em vários níveis:
  • Ao nível da base de dados, o utilizador da base de dados tem de existir e a respetiva palavra-passe tem de corresponder
  • Ao nível do projeto, o utilizador pode não ter as autorizações do IAM corretas, incluindo as autorizações serviceusage.services.use ou cloudsql.instances.connect.
  • Ao nível da rede, se a instância do Cloud SQL estiver a usar o IP público, o IP de origem da ligação tem de estar numa rede autorizada.

Experimente estas ações…

  • Certifique-se de que o utilizador existe e que a palavra-passe corresponde.
  • Atribua a função Service Usage Consumer à conta de utilizador. Esta função inclui a autorização serviceusage.services.use.
  • Se usar um IP público, certifique-se de que o IP de origem está numa rede autorizada.
Tabela desconhecida COLUMN_STATISTICS em information_schema. Isto acontece se usar o binário mysqldump do MySQL 8.0 para despejar dados de uma base de dados do MySQL 5.7 e importar para uma base de dados do MySQL 8.0.

Se exportar dados de uma base de dados do MySQL 5.7 e importar para uma base de dados do MySQL 8.0, certifique-se de que usa o binário mysqldump do MySQL 5.7. Se usar o ficheiro binário mysqldump do MySQL 8.0, tem de adicionar a flag --column-statistics=0.

Mensagem de erro Resolução de problemas
x509: certificate isn't valid for any names. Problema conhecido: o Cloud SQL Proxy Dialer não é compatível com o Go 1.15 neste momento.

Até a correção, consulte esta discussão no GitHub, que inclui uma solução alternativa.

Erros desconhecidos

A tabela seguinte mostra alguns casos conhecidos em que pode ocorrer um Unknown Error e apresenta soluções específicas, quando aplicável. No entanto, esta lista não é exaustiva. Se não encontrar o seu registo na tabela, consulte o rastreador de problemas público do Cloud SQL. Se não encontrar o problema, considere enviar um relatório ou rever outras opções de apoio técnico.

Operação O problema pode ser... Coisas a experimentar…
Adicionar utilizador Se o utilizador já existir na base de dados, este erro pode ocorrer quando tenta adicioná-lo. Verifique se o utilizador já existe na base de dados.
cópia de segurança Se vir esta mensagem durante cópias de segurança automáticas ou manuais, é provável que o disco da instância esteja cheio. Se o tamanho do ficheiro temporário estiver a ocupar demasiado espaço, pode reiniciar a instância para remover o ficheiro e libertar espaço no disco. Caso contrário, pode ter de atualizar a instância para um tamanho do disco maior.
Clonar Isto pode ocorrer quando existe uma escassez de recursos na zona selecionada. Experimente outra zona na região ou aguarde e tente novamente mais tarde.
Criar instância
  • Isto pode ocorrer quando tenta reutilizar o mesmo nome de uma instância eliminada recentemente.
  • Também pode ser causado por problemas de conetividade intermitentes.
  • Os registos podem mostrar que a API Service Networking não está ativada para o projeto.
  • O erro também foi observado ao tentar criar várias instâncias em paralelo. Por exemplo, os scripts do Terraform tornam esta tentativa possível.
  • Outro motivo pode ser o esgotamento de um recurso específico ou o exceder de um limite de quota. Procure nos registos uma entrada como Quota 'INTERNAL_FORWARDING_RULES_WITH_TARGET_INSTANCE_PER_NETWORK' exceeded. Limit: 100.0 globally
  • Este erro pode ocorrer se a criação da sub-rede falhar quando não existirem mais endereços disponíveis no intervalo de IP.
  • Não é possível reutilizar os nomes das instâncias até cerca de uma semana após a eliminação.
  • No caso de problemas de conetividade intermitentes, a única solução é tentar novamente.
  • Ative a API Service Networking para o projeto.
  • Os scripts de criação de instâncias paralelas só criam uma das instâncias. Modifique o script para aguardar até que cada operação de criação de instâncias esteja concluída antes de continuar para a seguinte.
  • Atribua novos intervalos.
Crie uma réplica É provável que exista um erro mais específico nos ficheiros de registo. Inspeccione os registos no Cloud Logging para encontrar o erro real.

Se o erro for set Service Networking service account as servicenetworking.serviceAgent role on consumer project, desative e reative o Service Networking API. Esta ação cria a conta de serviço necessária para continuar com o processo.

Se o erro for The instance creation failed due to a permission error with the CMEK key defined, reveja as definições da chave e a localização.

Exportar Se vir esta mensagem ao tentar exportar uma base de dados para um contentor do Cloud Storage, a transferência pode estar a falhar devido a um problema de largura de banda. A instância do Cloud SQL pode estar localizada numa região diferente do contentor do Cloud Storage. A leitura e a gravação de dados de um continente para outro envolvem muita utilização da rede e podem causar problemas intermitentes como este.
Failover (antigo) Se estiver a usar a configuração de alternativa de recurso antiga, isto pode acontecer quando a máquina de réplica de alternativa de recurso não é suficientemente grande para processar a alternativa de recurso. A melhor solução é migrar para a configuração de alta disponibilidade atual. Caso contrário, tem de atualizar a réplica de failover para uma máquina maior.
Comutação por falha (automática) Uma operação de comutação automática por falha pode produzir esta mensagem de erro quando o serviço deteta que a instância principal ainda está a responder. Neste caso, não há nada a fazer. A comutação por falha não ocorre porque não é necessária.
Importar O ficheiro de importação pode conter declarações que requerem a função de superutilizador. Edite o ficheiro para remover todas as declarações que exijam a função de superutilizador.

O Cloud SQL também usa alguns ficheiros binários de terceiros (por exemplo, mysqld), que podem gerar mensagens de erro desconhecidas. Estes erros são internos aos binários de terceiros e estão fora do âmbito do Cloud SQL. No entanto, por vezes, é possível encontrar um erro mais específico nos ficheiros de registo do Cloud SQL aproximadamente à mesma hora.

Além disso, por vezes, trata-se de um código de erro desconhecido. Neste caso, a mensagem completa pode ser Unknown Error Code.