View a markdown version of this page

Dépannage de 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.

Dépannage de l’API de données Amazon RDS

Utilisez les sections suivantes, dont le titre correspond aux messages d’erreur courants, pour vous aider à résoudre les problèmes que vous rencontrez avec l’API de données Amazon RDS (API de données).

Transaction <transaction_ID> isn’t found

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 plus d’informations sur l’exécution des transactions, consultez 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 de données renvoient au maximum 1 Mio. 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, consultez Syntaxe SELECT dans la documentation de MySQL.

HttpEndpoint n'est pas activé pour le cluster <cluster_ID>

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

  • Le cluster de bases de données Aurora ne prend pas en charge l’API de données. Pour plus d’informations sur les types de clusters de bases de données pris en charge par l’API de données RDS, consultez Disponibilité des régions et des versions de pour l’API de données Amazon RDS.

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

  • Le cluster de bases de données a été renommé après l’activation de l’API de données. 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

Lorsque votre application envoie une demande avec un ID de transaction qui exécute déjà une autre requête, l’API de données renvoie immédiatement cette erreur à votre application. Cette situation peut se produire si votre application envoie des demandes de façon asynchrone, par exemple à l’aide d’un mécanisme comme 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 répéter la tentative jusqu’à ce que l’erreur disparaisse ou qu’un autre type d’erreur soit renvoyé à l’application.

Cette condition peut se produire avec l’API de données pour Aurora serverless et les instances provisionnées.

Exception de résultat non pris 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;

Multi-statements ne sont pas pris en charge

Multi-statements ne sont pas pris en charge dans l'API de données pour Aurora serverless les clusters provisionnés. Toute tentative d’exécuter plusieurs instructions dans un seul appel d’API entraîne cette erreur.

Pour exécuter des instructions multiples, utilisez des appels d’API ExecuteStatement distincts ou utilisez l’API BatchExecuteStatement pour le traitement par lots.

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

Aurora sans serveur v1 ignore silencieusement le paramètre de schéma. Cependant, Aurora Aurora serverless 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 ou provisionnez des clusters.

Problèmes de connectivité IPv6

Si vous rencontrez des problèmes lors de la connexion à l’API de données à l’aide de points de terminaison IPv6, vérifiez les causes potentielles suivantes :

  • Le réseau ne prend pas en charge le protocole IPv6 : vérifiez que votre infrastructure réseau prend en charge le protocole IPv6 et que le routage IPv6 est correctement configuré.

  • Problèmes de résolution DNS : assurez-vous que votre résolveur DNS peut résoudre les enregistrements AAAA pour les points de terminaison Dual-Stack (par ex., rds-data.us-east-1.api.aws).

  • Configuration du groupe de sécurité : mettez à jour les règles du groupe de sécurité pour autoriser le trafic IPv6 sur le port 443 (HTTPS). Ajoutez des règles pour les blocs CIDR IPv6 (par ex., ::/0 pour toutes les adresses IPv6).

  • Configuration des ACL réseau : assurez-vous que les ACL réseau autorisent le trafic IPv6 sur les ports requis.

  • Compatibilité avec les bibliothèques clientes : vérifiez que vos bibliothèques clientes HTTP et vos AWS kits SDK prennent en charge le protocole IPv6 et la connectivité à double pile.

  • Configuration du point de terminaison VPC : si vous l'utilisez PrivateLink, assurez-vous que votre point de terminaison VPC est configuré pour prendre en charge IPv6 et que des blocs d'adresse CIDR IPv6 sont attribués aux sous-réseaux associés.

Pour résoudre les problèmes de connectivité IPv6 :

  1. Testez la connectivité à l'aide des IPv4-only points de terminaison (.amazonaws.com) pour vérifier que le problème est spécifique à IPv6.

  2. Utilisez les outils de diagnostic réseau pour vérifier la connectivité IPv6 aux points de terminaison Dual-Stack.

  3. Vérifiez les CloudTrail journaux pour détecter toute erreur d'authentification ou d'autorisation lors de l'utilisation de points de terminaison IPv6.

  4. Vérifiez que votre application est correctement configurée pour utiliser les nouvelles URL de points de terminaison Dual-Stack.