SQL5105N erreur lors de l'exportation d'une table Db2 vers watsonx.data
Une instruction CREATE DATALAKE TABLE peut échouer avec une erreur SQL5105N lors de l'exportation d'une table Datalake de Db2 vers watsonx.data qui utilise un schéma non défini dans watsonx.data.
Symptômes
Lors de l'exportation d'une table Datalake de Db2 vers watsonx.data qui utilise un schéma qui n'est pas défini dans watsonx.data, une erreur se produira et entraînera une incohérence dans les informations sur les métadonnées stockées dans Db2.
Raisons
L'exemple de scénario ci-dessous illustre le problème.
Créer une table qui utilise un schéma qui n'existe pas dans la rubrique watsonx.data:
create datalake table test.t2_ice(id int, age int) stored by iceberg location 'db2remote://ibmlh-dev-iceberg//lh//t2_ice' tblproperties ('iceberg.catalog'='ibmlh-dev')
Ensuite, une erreur se produit, indiquant que l'objet TEST (le schéma) n'existe pas :
SQL5105N The statement failed because a Big SQL component encountered an
error. Component receiving the error: "DDL". Component returning the error:
"HIVE". Log entry identifier: "[BSL-0-6192310dc]". Reason: "Invalid Hive
object for TEST". SQLSTATE=58040Vous pouvez tenter de recréer la table avec cette commande :
create datalake table test.t2_ice(id int, age int) stored by iceberg location 'db2remote://ibmlh-dev-iceberg//lh//t2_ice' tblproperties ('iceberg.catalog'='ibmlh-dev')L'erreur suivante sera renvoyée si la table existe déjà :
SQL0601N The name of the object to be created is identical to the existing
name "test.t2_ice" of type "TABLE". SQLSTATE=42710Une tentative de suppression de la table avec la commande suivante échouera :
drop datalake table test.t2_ice Erreur renvoyée :
SQL0204N "TEST.T2_ICE" is an undefined name.Résolution du problème
Pour éviter ce problème, le schéma doit être créé dans watsonx.data avant d'exporter la table Db2 vers watsonx.data.
Pour supprimer une table dont les métadonnées ne correspondent pas à celles stockées sur le site Db2, il est possible d'utiliser l'instruction "drop table" suivante :
drop datalake table if exists test.t2_ice