Résolution des problèmes liés à l'API de données Amazon RDS - Amazon Aurora

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes liés à l'API de données Amazon RDS

Utilisez les sections suivantes, intitulées avec les messages d'erreur courants, pour résoudre les problèmes que vous rencontrez avec l'API de données Amazon RDS (API de données).

La transaction <transaction_ID>n'a pas été trouvée

Dans ce cas, l'ID de transaction spécifié dans un appel de l'API de données est introuvable. La cause de ce problème, parmi les suivantes, est ajoutée au message d'erreur :

  • La transaction peut avoir expiré.

    Assurez-vous que chaque appel transactionnel s'exécute dans un délai de trois minutes à la suite du précédent.

    Il est également possible que l'identifiant de transaction spécifié n'ait pas été créé par un BeginTransactionappel. Assurez-vous que l'ID de transaction de votre appel est valide.

  • Un appel précédent a entraîné l'arrêt de votre transaction.

    La transaction a déjà été arrêtée par votre appel CommitTransaction ou RollbackTransaction.

  • La transaction a été abandonnée en raison d'une erreur issue d'un appel précédent.

    Vérifiez si vos appels précédents ont généré des exceptions.

Pour de plus amples informations sur l'exécution des transactions, veuillez consulter Appel de l'API de données Amazon RDS.

Packet for query is too large

Dans ce cas, le jeu de résultats renvoyé pour une ligne était trop volumineux. La taille de l'API de données ne doit pas dépasser 64 Ko par ligne dans le jeu de résultat renvoyé par la base de données.

Pour résoudre ce problème, assurez-vous que la taille de chaque ligne d’un jeu de résultat est inférieure ou égale à 64 Ko.

Database Response Exceeded Size Limit

Dans ce cas, la taille du jeu de résultat renvoyé par la base de données était trop grande. La limite de l'API de données est de 1 Mio dans le jeu de résultats renvoyé par la base de données.

Pour résoudre ce problème, assurez-vous que les appels à l'API Data renvoient 1 MiB de données ou moins. Si vous avez besoin de renvoyer plus de 1 Mio, vous pouvez utiliser plusieurs appels ExecuteStatement avec la clause LIMIT dans votre requête.

Pour plus d'informations sur la clause LIMIT, veuillez consulter Syntaxe SELECT dans la documentation de MySQL.

HttpEndpointn'est pas activé pour le cluster <cluster_ID>

Vérifiez les causes potentielles suivantes de ce problème :

  • Le cluster de base de données Aurora ne prend pas en charge l'API de données. Pour plus d'informations sur les types de clusters de base de données pris en charge par l'API de données RDS, consultezDisponibilité de la région et de la version pour l'API de données Amazon RDS.

  • L'API de données n'est pas activée pour le cluster de base de données Aurora. Pour utiliser l'API de données avec un cluster de base de données Aurora, l'API de données doit être activée pour le cluster de base de données. Pour plus d'informations sur l'activation de l'API de données, consultezActivation de l'API de données Amazon RDS.

  • Le cluster de base de données a été renommé après l'activation de l'API de données pour celui-ci. Dans ce cas, désactivez l'API de données pour ce cluster, puis réactivez-la.

  • L'ARN que vous avez spécifié ne correspond pas précisément à l'ARN du cluster. Vérifiez que l'ARN renvoyé par une autre source ou créé par la logique du programme correspond exactement à l'ARN du cluster. Par exemple, assurez-vous que l'ARN que vous utilisez respecte la casse adéquate pour tous les caractères alphabétiques.

DatabaseErrorException: La transaction exécute toujours une requête

Si votre application envoie une demande avec un identifiant de transaction et que cette transaction traite actuellement une autre demande, l'API Data renvoie immédiatement cette erreur à votre application. Cette condition peut se produire si votre application fait des requêtes asynchrones, en utilisant un mécanisme tel que les « promesses » en Javascript.

Pour résoudre ce problème, attendez que la demande précédente soit terminée, puis réessayez. Vous pouvez continuer à réessayer jusqu'à ce que l'erreur ne se produise plus ou que l'application reçoive un autre type d'erreur.

Cette condition peut se produire avec l'API de données pour Aurora Serverless v2 les instances provisionnées. Dans Data API forAurora Serverless v1, les demandes suivantes pour le même ID de transaction attendent automatiquement la fin de la demande précédente. Cependant, cet ancien comportement peut potentiellement rencontrer des délais d'attente car la demande précédente prend trop de temps. Si vous portez une ancienne application d'API de données qui envoie des demandes simultanées, modifiez votre logique de gestion des exceptions pour tenir compte de ce nouveau type d'erreur.

Exception de résultat non prise en charge

L'API de données ne prend pas en charge tous les types de données. Cette erreur se produit lorsque vous exécutez une requête qui renvoie un type de données non pris en charge.

Pour contourner ce problème, convertissez le type de données non pris en charge en. TEXT Par exemple :

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

Les déclarations multiples ne sont pas prises en charge

Les instructions multiples ne sont pas prises en charge dans l'API de données pour Aurora Serverless v2 et les clusters provisionnés. Toute tentative d'exécution de plusieurs instructions dans un seul appel d'API entraîne cette erreur.

Pour exécuter plusieurs instructions, utilisez des appels d'ExecuteStatementAPI distincts ou utilisez l'BatchExecuteStatementAPI pour le traitement par lots.

Le paramètre de schéma n'est pas pris en charge

Aurora Serverless v1 ignore silencieusement le paramètre de schéma. Cependant, Aurora Serverless v2 et les clusters provisionnés rejettent explicitement les appels d'API qui incluent le paramètre de schéma.

Pour résoudre ce problème, supprimez le paramètre de schéma de tous les appels à l'API de données lorsque vous utilisez Aurora Serverless v2 ou des clusters provisionnés.