Solução de problemas com a API de dados do Amazon RDS - Amazon Aurora

Solução de problemas com a API de dados do Amazon RDS

Use as seções a seguir, intituladas com mensagens de erro comuns, para ajudar na solução de problemas com a API de dados do Amazon RDS (API de dados).

Transação <transaction_ID> não encontrada

Nesse caso, o ID da transação especificado em uma chamada de API de dados não foi encontrado. A causa desse problema é anexada à mensagem de erro e é uma das seguintes:

  • A transação pode ter expirado.

    Verifique se a chamada da transação é executada três minutos depois da última.

    Também é possível que o ID da transação especificada não tenha sido criado por uma chamada de BeginTransaction. Verifique se a chamada tem um ID de transação válido.

  • Uma chamada anterior provocou o encerramento da transação.

    A transação já foi encerrada pela chamada CommitTransaction ou RollbackTransaction.

  • A transação foi interrompida devido a um erro de uma chamada anterior.

    Verifique se suas chamadas anteriores lançaram exceções.

Para obter informações sobre como executar transações, consulte Chamar a API de dados do Amazon RDS.

O pacote para consulta é muito grande

Nesse caso, o conjunto de resultados obtido para uma linha era muito grande. O limite de tamanho da API de dados é de 64 KB por linha no conjunto de resultados obtido pelo banco de dados.

Para resolver esse problema, verifique se cada linha em um conjunto de resultados tem até 64 KB.

A resposta do banco de dados excedeu o limite de tamanho

Nesse caso, o tamanho do conjunto de resultados obtido pelo banco de dados era muito grande. O limite de tamanho da API de dados é de 1 MiB no conjunto de resultados obtido pelo banco de dados.

Para resolver esse problema, garanta que as chamadas para a API de dados exibam até 1 MiB de dados. Se você precisar retornar mais de 1 MiB, poderá usar várias chamadas ExecuteStatement com a cláusula LIMIT na sua consulta.

Para obter mais informações sobre a cláusula LIMIT, consulte SELECT Syntax na documentação do MySQL.

HttpEndpoint não está habilitado para o cluster <cluster_ID>

Verifique as possíveis causas a seguir para esse problema:

  • O cluster de banco de dados do Aurora não é compatível com a API de dados. Para ter informações sobre os tipos de clusters de banco de dados compatíveis com a API de dados do RDS, consulte Disponibilidade de região e versão para a API de dados do Amazon RDS.

  • A API de dados não está habilitada para o cluster de banco de dados do Aurora. Para usar a API de dados com um cluster de banco de dados do Aurora, a API de dados deve estar habilitada para o cluster de banco de dados. Para ter informações sobre como habilitar a API de dados, consulte Habilitar a API de dados do Amazon RDS.

  • O cluster de banco de dados foi renomeado depois que a API de dados foi habilitada para ele. Nesse caso, desative a API de dados desse cluster e, depois, habilite-a novamente.

  • O ARN especificado não corresponde com precisão ao ARN do cluster. Verifique se o ARN retornado de outra fonte ou criado pela lógica do programa corresponde exatamente ao ARN do cluster. Por exemplo, verifique se o ARN usado tem a letra correta para todos os caracteres alfabéticos.

DatabaseErrorException: a transação ainda está executando uma consulta

Se a aplicação enviar uma solicitação com um ID de transação e essa transação estiver processando outra solicitação no momento, a API de dados retornará esse erro à aplicação imediatamente. Essa condição poderá surgir se a aplicação fizer solicitações assíncronas, usando um mecanismo como “promessas” em JavaScript.

Para resolver esse problema, aguarde até que a solicitação anterior seja concluída e repita a solicitação. Você pode continuar tentando novamente até que o erro não ocorra mais ou que a aplicação receba algum tipo diferente de erro.

Essa condição pode ocorrer com a API de dados do Aurora Serverless v2 e instâncias provisionadas. Na API de dados do Aurora Serverless v1, as solicitações subsequentes para o mesmo ID de transação aguardam automaticamente a conclusão da solicitação anterior. No entanto, esse comportamento mais antigo poderia encontrar tempos limite devido ao fato de a solicitação anterior demorar muito. Se você tiver uma aplicação antiga da API de dados que faz solicitações simultâneas, modifique sua lógica de tratamento de exceções para considerar esse novo tipo de erro.

Exceção de resultado não aceito

A API de dados não comporta todos os tipos de dados. Esse erro ocorre quando você executa uma consulta que exibe um tipo de dados não aceito.

Para contornar esse problema, converta o tipo de dados não aceito em TEXT. Por exemplo:

SELECT custom_type::TEXT FROM my_table; -- OR SELECT CAST(custom_type AS TEXT) FROM my_table;

Declarações múltiplas não são aceitas

Na API de dados para o Aurora Sem Servidor v2 e em clusters provisionados, não é possível usar declarações múltiplas. A tentativa de executar várias declarações em uma única chamada de API gera esse erro.

Para executar várias declarações, use chamadas de API ExecuteStatement separadas ou use a API BatchExecuteStatement para processamento em lote.

O parâmetro schema não é aceito

O Aurora Sem Servidor v1 ignora silenciosamente o parâmetro schema. No entanto, o Aurora Sem Servidor v2 e os clusters provisionados rejeitam explicitamente as chamadas de API que incluem o parâmetro schema.

Para resolver esse problema, remova o parâmetro schema de todas as chamadas à API de dados ao usar o Aurora Sem Servidor v2 ou clusters provisionados.