Messages d'erreur dans Cloud SQL pour MySQL

Cette page présente certains des messages d'erreur rencontrés dans Cloud SQL.

Présentation

Les messages d'erreur dans Cloud SQL proviennent de nombreuses sources et apparaissent à de nombreux endroits. Certains messages d'erreur proviennent des moteurs de base de données proprement dits, d'autres du service Cloud SQL ou d'applications clientes, et d'autres sont renvoyés par des appels à l'API Admin Cloud SQL.

Cette page couvre certaines des erreurs les plus courantes rencontrées dans Cloud SQL. Si vous n'y trouvez pas le code d'erreur ou le message qui vous intéresse, vous pouvez le rechercher dans les documents de référence sources ci-dessous :

Si vous ne trouvez pas le document de référence sur le message d'erreur qui s'affiche, vous pouvez également effectuer une recherche sur les sites suivants, où d'autres utilisateurs peuvent avoir une expérience pertinente :

Erreurs opérationnelles

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

Message d'erreur Dépannage
Connexion xxx annulée pour bd : DB_NAME. L'application ne met pas fin correctement aux connexions.

Vérifiez les conditions suivantes :

  • L'application n'a pas appelé "mysql_close()" avant de quitter.
  • Erreurs de communication.
  • L'application a peut-être été mise en veille pendant un délai supérieur au nombre de secondes spécifié dans "wait_timeout" ou "interactive_timeout" sans émettre de requêtes au serveur. Consultez la Section 5.1.7 sur les variables système du serveur (en anglais).
  • L'application s'est arrêtée brusquement pendant un transfert de données.
  • La valeur de la variable max_allowed_packet est peut-être trop petite ou les requêtes nécessitent plus de mémoire que celle allouée à mysqld. Pour résoudre ce problème, remplacez la valeur de l'option max_allowed_packet par un nombre beaucoup plus élevé.
Accès refusé. Vous avez besoin d'au moins un des privilèges SUPER pour cette opération. Il est possible qu'une vue, une fonction ou une procédure de la base de données source fasse référence à DEFINER d'une manière non acceptée par Cloud SQL.

Mettez à jour la clause DEFINER dans les bases de données externes, par exemple pour passer de root@localhost à root@% ou à un utilisateur qui n'est pas un super-utilisateur. Pour en savoir plus, consultez la page sur le contrôle des accès aux objets stockés.

Accès refusé pour l'utilisateur "XXX"@'XXX (avec le mot de passe : XXX) Plusieurs causes sont possibles, dont les suivantes :
  • Le nom d'utilisateur (ou le mot de passe) est incorrect.
  • L'utilisateur se connecte à partir d'une URL autre que @XXX.
  • L'utilisateur ne dispose pas des droits d'accès appropriés pour la base de données à laquelle il tente de se connecter.

Essayez les solutions suivantes ...

  • Vérifiez le nom d'utilisateur et le mot de passe correspondant.
  • Vérifiez l'origine de la connexion pour voir si elle correspond à l'URL pour laquelle l'utilisateur dispose de droits d'accès.
  • Vérifiez les droits d'accès de l'utilisateur dans la base de données.
Plage d'adresses IP allouée introuvable dans le réseau. Les appairages VPC n'ont pas été mis à jour après la modification ou la suppression d'une plage allouée.

Vous devez modifier la connexion privée. Exécutez la commande suivante et veillez à utiliser l'argument --force :

gcloud services vpc-peerings update \
--network=VPC_NETWORK \
--ranges=ALLOCATED_RANGES \
--service=servicenetworking.googleapis.com \
--force
Utilisation de la commande 'ANY' refusée à l'utilisateur 'root'@'%' pour la table ... L'utilisateur ne dispose pas de toutes les autorisations requises pour effectuer cette opération.

Essayez ce qui suit :

  1. Connectez-vous à la base de données (par exemple, en utilisant Cloud Shell) et ouvrez une session en tant qu'utilisateur root.
  2. Exécutez USE mysql;.
  3. Accordez les autorisations suivantes à l'aide de la syntaxe :
    GRANT PERMISSION_1,PERMISSION_2 ON *.* TO 'root' WITH GRANT OPTION;
       
    • SELECT
    • INSERT
    • METTRE À JOUR
    • SUPPRIMER
    • CRÉER
    • DROP
    • ACTUALISER
    • SHUTDOWN
    • PROCESS
    • REFERENCES
    • INDEX
    • ALTER
    • SHOW DATABASES
    • CREATE TEMPORARY TABLES
    • LOCK TABLES
    • EXECUTE
    • REPLICATION SLAVE
    • REPLICATION CLIENT
    • CREATE VIEW
    • SHOW VIEW
    • CREATE ROUTINE
    • ALTER ROUTINE
    • CREATE USER
    • ÉVÉNEMENT
    • TRIGGER
    • CREATE TABLESPACE
  4. Exécutez la commande USE 'Database_Name';, où Database_Name est la base de données dans laquelle vous créez les vues.
  5. Exécutez toutes les commandes de création de vue dans la session et validez-les.
Message d'erreur Dépannage
Requête incorrecte. Ce message peut avoir plusieurs causes. L'une des plus courantes est une erreur Illegal Argument. Dans ce cas, la requête utilise le mauvais argument ou une valeur d'argument non valide. Pour les nombreuses autres causes possibles, le message d'erreur peut contenir un indice utile.

Dans le cas de Illegal Argument, vérifiez la requête pour vous assurer que chaque argument est autorisé et que sa valeur est valide. Pour toutes les autres causes, consultez les fichiers journaux pour savoir si d'autres informations sont disponibles.

Message d'erreur Dépannage
Impossible de modifier les plages allouées dans CreateConnection. Veuillez utiliser UpdateConnection. Les appairages VPC n'ont pas été mis à jour après la modification ou la suppression d'une plage allouée.

Vous devez modifier la connexion privée. Exécutez la commande suivante et veillez à utiliser l'argument --force :

gcloud services vpc-peerings update \
--network=VPC_NETWORK \
--ranges=ALLOCATED_RANGES \
--service=servicenetworking.googleapis.com \
--force
Constraints/sql.restrictAuthorizedNetworks. L'opération de clonage est bloquée par la configuration Authorized Networks. Les Authorized Networks sont configurés pour les adresses IP publiques dans la section "Connectivité" de la console Google Cloud, et le clonage n'est pas autorisé pour des raisons de sécurité.

Si possible, supprimez toutes les entrées Authorized Networks de l'instance Cloud SQL. Sinon, créez une instance dupliquée sans aucune entrée Authorized Networks.

Message d'erreur Dépannage
Le disque est saturé. Le disque de l'instance principale peut arriver à saturation lors de la création de l'instance dupliquée.

Modifiez l'instance principale en augmentant la taille du disque.

Message d'erreur Dépannage
Échec de la création du sous-réseau Aucune autre adresse disponible dans la plage d'adresses IP.

Impossible de trouver des blocs libres dans les plages d'adresses IP allouées. Veuillez allouer de nouvelles plages à ce fournisseur de services.

Il n'y a plus d'adresses disponibles dans la plage d'adresses IP allouée.

Voici quelques scénarios possibles :

  • La taille de la plage d'adresses IP allouée à la connexion de service privé est inférieure à /24.
  • La taille de la plage d'adresses IP allouée pour la connexion de service privé est trop petite pour le nombre d'instances Cloud SQL.
  • La taille requise pour la plage d'adresses IP allouée sera plus importante si les instances sont créées dans plusieurs régions. Voir Taille de la plage allouée

Pour chacun des scénarios ci-dessus, vous pouvez choisir de développer la plage d'adresses IP existante ou d'allouer une plage d'adresses IP supplémentaire à la connexion de service privée.

Si vous allouez une nouvelle plage, veillez à ne pas créer d'allocation qui chevauche des allocations existantes.

Après avoir créé une nouvelle plage d'adresses IP, mettez à jour l'appairage de VPC à l'aide de la commande suivante :

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

Si vous développez une allocation existante, veillez à effectuer uniquement une opération d'augmentation de la plage d'allocation et non à la réduire. Par exemple, si l'allocation d'origine était 10.0.10.0/24, la nouvelle allocation doit être définie au mininmum sur 10.0.10.0/23.

En règle générale, si vous commencez par utiliser une allocation /24, il est conseillé de réduire le /masque d'une unité pour chaque condition (groupe de type d'instances supplémentaire, région supplémentaire). Par exemple, si vous essayez de créer les deux groupes de types d'instances sur la même allocation, passer de /24 à /23 est suffisant.

Après avoir étendu une plage d'adresses IP existante, mettez à jour l'appairage de VPC à l'aide de la commande suivante :

gcloud services vpc-peerings update \
--service=servicenetworking.googleapis.com
--ranges=RESERVED_RANGE_NAME \
--network=VPC_NETWORK \
--project=PROJECT_ID \
--force
Message d'erreur Dépannage
(gcloud.sql.connect) Il semble que votre client ne dispose pas d'une connectivité ipv6 et que l'instance de base de données ne possède pas d'adresse ipv4. Vous essayez de vous connecter à votre instance IP privée à l'aide de Cloud Shell.

À l'heure actuelle, il n'est pas possible de se connecter depuis Cloud Shell à une instance avec une adresse IP privée seulement.

Le nombre d'octets du paquet est supérieur à max_allowed_packet lors du vidage de la table. La taille du paquet est supérieure à celle autorisée par les paramètres.

Utilisez mysqldump avec l'option max_allowed_packet.

Pour en savoir plus sur l'utilisation des options de mysqldump pour la migration des importations gérées, consultez la section Options de synchronisation initiales autorisées et par défaut.

Message d'erreur Dépannage
InnoDB: échec de l'écriture dans le fichier ./ibtmp1 avec un décalage XXXX. YYYY octets auraient dû être écrits, mais il y en a eu 0. L'instance a atteint une limite stricte lors d'une sauvegarde automatique.

Vérifiez que votre système d'exploitation et votre système de fichiers acceptent les fichiers de cette taille. Vérifiez que le disque n'est pas saturé ou qu'il ne dépasse pas le quota de disque. Vous pouvez demander une augmentation de vos quotas depuis la console Google Cloud ou modifier l'instance afin de la mettre à niveau vers un disque de taille plus importante.

Erreur interne. Le compte de service de mise en réseau des services requis pour cette fonctionnalité peut ne pas être spécifié pour le projet de service.

Pour réparer les autorisations de service, désactivez l'API Service Networking API, attendez cinq minutes, puis réactivez-la.

Requête non valide : la configuration de mise en réseau des services est incorrecte pour l'instance. L'API Service Networking API n'est pas activée dans le projet.

Activez l'API Service Networking API dans votre projet. Si cette erreur s'affiche lorsque vous tentez d'attribuer une adresse IP privée à une instance Cloud SQL et que vous utilisez un VPC partagé, vous devez également activer l'adresse Service Networking API pour le projet hôte.

Message d'erreur Dépannage
Table des métadonnées verrouillée. Une autre requête, un processus ou une transaction bloque votre requête et verrouille la table.

Recherchez le processus qui a verrouillé la table et arrêtez-le :

  1. Diagnostiquer avec : sql> show processlist ;

    Le premier élément de la liste peut être celui conservant le verrouillage, que les éléments suivants attendent.

  2. La commande SHOW INNODB STATUS peut également être utile.
  3. Exécutez la commande KILL <var>PID</var> ;
Message d'erreur Dépannage
Échec d'association de réseau. L'API Service Networking API n'est pas activée dans le projet.

Activez l'API Service Networking API dans votre projet. Si cette erreur s'affiche lorsque vous tentez d'attribuer une adresse IP privée à une instance Cloud SQL et que vous utilisez un VPC partagé, vous devez également activer l'adresse Service Networking API pour le projet hôte.

Message d'erreur Dépannage
Échec de l'opération, car une autre était déjà en cours. La plupart des opérations dans Cloud SQL sont synchrones. Vous ne pouvez en exécuter qu'une seule à la fois.

Attendez la fin de l'opération précédente avant d'en commencer une autre.

L'opération n'est pas valide pour cette instance. Cette erreur est renvoyée par un appel d'API à instances.restoreBackup, et cela signifie que vous ne pouvez pas effectuer de restauration à partir d'une sauvegarde sur une instance dont la taille d'espace de stockage (XX Go) est inférieure à celle de la sauvegarde (YY Go).

Modifiez l'instance cible en augmentant la taille de l'espace de stockage.

Message d'erreur Dépannage
Quota dépassé. Vous avez atteint votre limite de quota par minute ou par jour. Vérifiez les quotas et limites pour Cloud SQL.

Demandez une augmentation de vos quotas depuis Google Cloud Console.

Message d'erreur Dépannage
Les emplacements de connexion restants sont réservés. Le nombre maximal de connexions autorisé a été atteint

Augmentez la valeur de l'option max_connections. Consultez la page Configurer des options de base de données.

Il manque une clé API valide dans la requête. Il se peut que le fichier JSON de clé de compte de service ne soit pas valide ou qu'il ne soit pas stocké à l'emplacement attendu.

Vérifiez que vous disposez d'un fichier JSON de clé de compte de service valide à l'emplacement stocké dans la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS et que cette dernière pointe vers l'emplacement approprié.

Message d'erreur Dépannage
La clé spécifiée est trop longue. La longueur maximale de la clé est de 767 octets. La variable innodb_large_prefix est peut-être définie sur l'instance principale externe.

Définissez l'option innodb_large_prefix sur ON lors de la création de l'instance dupliquée ou mettez à jour l'instance dupliquée existante avec l'option.

Erreur SSL : marge intérieure incorrecte. Erreur de certificat du serveur.

Créez un certificat de serveur et effectuez une rotation.

Une erreur système est survenue.
  • Il se peut que l'utilisateur ne dispose pas de toutes les autorisations Cloud Storage dont il a besoin.
  • La table de base de données n'existe peut-être pas

Essayez les solutions suivantes ...

  • Vérifiez que vous disposez tout au moins des autorisations WRITER sur le bucket et READER sur le fichier d'exportation. Pour en savoir plus sur la configuration du contrôle d'accès dans Cloud Storage, consultez la page Créer et gérer des listes de contrôle d'accès.
  • Assurez-vous que la table existe. Si tel est le cas, vérifiez alors que vous disposez des autorisations appropriées sur le bucket de stockage.
Message d'erreur Dépannage
Définition de la table modifiée. Pendant le processus d'exportation, la table a subi une modification.

La transaction de vidage peut échouer si vous utilisez les instructions ci-dessous lors de l'opération d'exportation :

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

Supprimez l'une de ces instructions de l'opération de vidage.

La taille du fichier temporaire dépasse la valeur de "temp_file_limit". La valeur de l'option temp_file_limit n'est pas suffisamment élevée pour votre utilisation de la base de données.

Augmentez la taille de temp_file_limit. Consultez la page Configurer des options de base de données.

La table db.table n'existe pas. Si une ou plusieurs tables InnoDB ont disparu après un redémarrage de MySQL et que le journal d'erreurs MySQL comporte les avertissements suivants en même temps, cela est dû au fait que la clé étrangère et les colonnes de clé référencées ne sont pas synchronisées.
[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.
      

Après un redémarrage de la base de données, MySQL doit charger la ou les tables dans le cache du dictionnaire InnoDB lors du premier accès. Si une différence est détectée, l'accès à cette table est bloqué.

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

La désactivation de foreign_key_checks pour la session MySQL permet à nouveau d'accéder à la table. Une fois la table accessible et chargée dans le cache du dictionnaire, InnoDB ne vérifie pas les incohérences au niveau des clés étrangères et ne se heurte pas à celles-ci avant le prochain redémarrage de la base de données.

Vous devez corriger les incohérences de la clé étrangère pour éviter tout autre problème.

  1. Désactivez foreign_key_checks pour la session cliente mysql et accédez à la table.
    mysql> SET SESSION FOREIGN_KEY_CHECKS=0;
                
  2. Inspectez les tables parents et enfants, et identifiez les incohérences entre les colonnes de clé étrangère et de clé référencée.
    mysql> SHOW CREATE TABLE parent_table;
    mysql> SHOW CREATE TABLE child_table;
                

    Vérifiez que les colonnes correspondantes présentent des types de données similaires. La taille et le signe des types de précision fixes, tels que INTEGER et DECIMAL, sont identiques. Pour les colonnes de chaînes non binaires (caractères), le jeu de caractères et le classement doivent être identiques.

  3. Corrigez la non-concordance à l'aide de l'instruction ALTER TABLE. Certaines opérations peuvent vous obliger à supprimer la contrainte de clé étrangère, à appliquer la modification, puis à ajouter à nouveau la clé étrangère.
  4. Réactivez foreign_key_checks.
    mysql> SET SESSION FOREIGN_KEY_CHECKS=1;
                
(Délai d'inactivité) lors de l'exportation. Les formats CSV et SQL sont exportés de manière différente. Comme le format SQL inclut l'ensemble de la base de données, l'exportation est susceptible de prendre plus de temps.

Utilisez le format CSV et exécutez plusieurs tâches d'exportation plus petites pour réduire le volume et la longueur de chaque opération.

Trop de connexions. Cette erreur peut se produire si la valeur de l'option max_connections est trop élevée. Cela peut également être dû à l'activation d'une option hors séquence.

Réduisez la valeur de l'option max_connections ou contactez le service client pour demander la suppression de l'option suivie d'un hard drain. Cela force l'instance à redémarrer sur un autre hôte avec une nouvelle configuration, sans option ni paramètre.

Message d'erreur Dépannage
Connexion non autorisée. Il peut exister plusieurs causes, car l'autorisation se produit à plusieurs niveaux :
  • Au niveau de la base de données, il doit exister un utilisateur avec un mot de passe correspondant.
  • Au niveau du projet, l'utilisateur peut ne pas disposer des autorisations IAM appropriées, telles que serviceusage.services.use ou cloudsql.instances.connect.
  • Au niveau du réseau, si l'instance Cloud SQL utilise une adresse IP publique, l'adresse IP source de la connexion doit se trouver dans un réseau autorisé.

Essayez les solutions suivantes ...

  • Assurez-vous qu'il existe un utilisateur avec un mot de passe correspondant.
  • Attribuez le rôle Service Usage Consumer au compte utilisateur. Ce rôle inclut l'autorisation serviceusage.services.use.
  • Si vous utilisez une adresse IP publique, assurez-vous que l'adresse IP source se trouve dans un réseau autorisé.
Table inconnue COLUMN_STATISTICS dans information_schema. Cela se produit si vous utilisez le binaire mysqldump de MySQL 8.0 pour vider les données d'une base de données MySQL 5.7 et les importer dans une base de données MySQL 8.0.

Si vous videz les données d'une base de données MySQL 5.7 et que vous les importez dans une base de données MySQL 8.0, veillez à utiliser le binaire mysqldump de MySQL 5.7. Si vous utilisez le binaire mysqldump de MySQL 8.0, vous devez ajouter l'option --column-statistics=0.

Message d'erreur Dépannage
Erreur x509 : le certificat n'est valide pour aucun nom. Problème connu : les appels de proxy Cloud SQL ne sont pas compatibles avec Go 1.15 pour le moment.

En attendant, consultez cette discussion sur GitHub, qui inclut une solution de contournement.

Erreurs inconnues

Le tableau suivant présente quelques cas connus pouvant générer une erreur Unknown Error et répertorie des solutions spécifiques, le cas échéant. Toutefois, cette liste n'est pas exhaustive. Si votre cas n'apparaît pas dans le tableau, consultez l'outil public de suivi des problèmes de Cloud SQL. Si vous n'y trouvez pas votre problème, pensez à envoyer un rapport ou à consulter les autres options d'assistance.

Opération Cause possible Solutions possibles
Ajouter un utilisateur Si l'utilisateur existe déjà dans la base de données, cette erreur peut se produire lorsque vous essayez de l'ajouter. Vérifiez que l'utilisateur n'existe pas déjà dans la base de données.
Sauvegarde Si ce message s'affiche pendant les sauvegardes manuelles ou automatiques, il est probable que le disque de l'instance soit saturé. Si le fichier temporaire occupe trop d'espace, vous pouvez redémarrer l'instance afin de le supprimer et de libérer l'espace disque qu'il utilisait. Dans le cas contraire, vous devrez peut-être mettre à niveau votre instance vers un disque de taille plus importante.
Cloner Ce message peut s'afficher en raison d'un manque de ressources dans la zone sélectionnée. Essayez dans une autre zone de la région, ou patientez et réessayez plus tard.
Créer une instance
  • Ce message peut s'afficher si vous essayez de réutiliser le même nom que celui d'une instance récemment supprimée.
  • Cela peut également être dû à des problèmes de connectivité intermittents.
  • Les journaux peuvent indiquer que l'API Service Networking n'est pas activée pour le projet.
  • L'erreur a également pu être observée lorsque vous essayez de créer plusieurs instances en parallèle. Les scripts Terraform, entre autres, peuvent vous permettre de réaliser cette tentative.
  • Il se peut également qu'une ressource spécifique soit épuisée ou qu'une limite de quota ait été dépassée. Recherchez une entrée du type Quota 'INTERNAL_FORWARDING_RULES_WITH_TARGET_INSTANCE_PER_NETWORK' exceeded. Limit: 100.0 globally dans les journaux.
  • Cette erreur peut se produire en cas d'échec de la création du sous-réseau lorsqu'il n'y a plus d'adresses disponibles dans la plage d'adresses IP.
  • Après avoir supprimé une instance, vous devez attendre environ une semaine avant de pouvoir réutiliser son nom.
  • Si vous rencontrez des problèmes de connectivité intermittents, la seule solution possible consiste à réessayer.
  • Activez l'API Service Networking pour le projet.
  • Les scripts de création d'instances parallèles ne parviendront à créer qu'une seule de ces instances. Modifiez le script pour laisser chaque opération de création d'instance aboutir avant de passer à la suivante.
  • Allouez de nouvelles plages.
Créer une instance répliquée Les fichiers journaux indiquent probablement une erreur plus spécifique. Inspectez les journaux dans Cloud Logging pour rechercher l'erreur en question.

Si l'erreur est set Service Networking service account as servicenetworking.serviceAgent role on consumer project, désactivez et réactivez Service Networking API. Cette action crée le compte de service nécessaire pour poursuivre le processus.

Si l'erreur est The instance creation failed due to a permission error with the CMEK key defined, consultez les paramètres de clé et l'emplacement.

Exporter Si ce message s'affiche lorsque vous essayez d'exporter une base de données vers un bucket Cloud Storage, le transfert peut échouer en raison d'un problème de bande passante. L'instance Cloud SQL peut se trouver dans une région différente de celle du bucket Cloud Storage. La lecture et l'écriture de données d'un continent à l'autre impliquent une utilisation importante du réseau, pouvant entraîner ce type de problèmes intermittents.
Basculement (ancienne configuration) Lorsque vous utilisez l'ancienne configuration de basculement, ce message peut s'afficher lorsque l'instance dupliquée de basculement n'est pas assez volumineuse pour gérer le basculement. La meilleure solution consiste à migrer vers la configuration de haute disponibilité actuelle. Sinon, vous devez mettre à jour l'instance dupliquée de basculement vers une machine plus grande.
Basculement (automatique) Une opération de basculement automatique peut générer ce message d'erreur lorsque le service détecte que l'instance principale est toujours réactive. Dans ce cas, aucune action de votre part n'est nécessaire. Le basculement n'a pas lieu, car il n'est pas requis.
Importer Le fichier d'importation peut contenir des instructions qui nécessitent le rôle de super-utilisateur. Modifiez le fichier pour supprimer toutes les instructions nécessitant le rôle de super-utilisateur.

Cloud SQL utilise également certains binaires tiers (par exemple, mysqld), qui peuvent générer des messages d'erreur inconnus. De telles erreurs sont internes aux binaires tiers et dépassent le cadre de Cloud SQL. Toutefois, une erreur plus spécifique peut parfois être consignée dans les fichiers journaux Cloud SQL à peu près au même instant.

Il peut également s'agir d'un code d'erreur inconnu. Dans ce cas, le message complet peut être Unknown Error Code.