Loading

Erreur "commit failed; nested exception is org.hibernate.TransactionException: commit failed" lors de l'importation d'un site Tableau Server

Date de publication: Dec 9, 2022
Description

Lors de l'importation d'un site Tableau Server, l'importation échoue et le message d'erreur suivant peut s'afficher dans la ligne de commande :

"An error occurred on the server while trying to import site <Site Name>. (Une erreur s'est produite sur le serveur lors de la tentative d'importation du site <Site Name>.)
This job failed due to an error. (Ce travail a échoué en raison d'une erreur.)
commit failed; nested exception is org.hibernate.TransactionException: commit failed - 'violates foreign key constraint'". (échec de la validation; l'exception imbriquée est org.hibernate.TransactionException : échec de la validation - 'enfreint la contrainte de clé étrangère'".)

Cause

Erreurs ou omissions dans le contenu des fichiers de mappage.
Résolution

Option 1

Vérifiez que le contenu de mappage ne contient pas d'erreurs ou d'omissions, et gardez à l'esprit que la capitalisation doit également correspondre.

Option 2

Vérifiez si le journal siteimportexport_<node>.log comporte une erreur du type décrit ci-dessous :
"Caused by: org.postgresql.util.PSQLException: ERROR: insert or update on table "<table name>" violates foreign key constraint "<key name>" (ERREUR : une insertion ou une mise à jour sur la table "<table name>" enfreint la contrainte de clé étrangère "<key name>")
  Detail: Key <identifier> is not present in table "<table name>"." (Détails : La clé <identifier> n'est pas présente dans la table "<table name>".")

Au lieu de cela, l'erreur mentionnée ci-dessus pourrait également référencer des tables différentes, par exemple system_users. Si une erreur de ce type est détectée, cela indique sans doute que des fichiers de mappage d'utilisateurs ou de programmations incluent un contenu de mappage incorrect.
Envisagez d'utiliser Tableau Desktop pour les jointures au référentiel PostgreSQL (comme décrit ci-dessous) pour vérifier que les fichiers de mappage sont corrects à 100 %.

 
Ressources supplémentaires
Pour plus d'informations à ce sujet, consultez Comment migrer Tableau Server de l'authentification locale à Active Directory en utilisant la migration de site dans la communauté Tableau. Le document contient le détail complet des messages d'erreur et indique comment résoudre le problème :
"The entire import will fail if even a single ... mapping is invalid. For systems with hundreds or thousands of user mappings that are difficult to accurately verify manually, it is a best practice to leverage Tableau Desktop to machine-verify the accuracy of your mapping file. (For a large site that takes many hours to import, this step can save you hours of wasted time if an import were to fail at the end.) When you think your mappingsSystemUserNameMapper.csv is ready, try connecting to it with Tableau Desktop’s CSV data source method, and join it to your target system’s PostgreSQL repository, specifically the system_users table, which will contain entries for each mapped Active Directory user. Establish a left-outer join between mappingsSystemUserNameMapper.csv and system_users and use this to create a new sheet which then verifies that each incoming Local user’s Target Name column truly has a valid, matching Active Direcotry account Name in system_users." (Il suffit d'un... seul mappage non valide pour que toute l'importation échoue. Pour les systèmes contenant des centaines ou des milliers de mappages utilisateur dont il est difficile de vérifier manuellement s'ils sont corrects, la meilleure pratique consiste à utiliser Tableau Desktop pour que l'ordinateur vérifie automatiquement si votre fichier de mappage est correct. (Pour un site de grande taille dont l'importation demande plusieurs heures, cette étape peut vous éviter de perdre beaucoup de temps dans le cas où l'importation échouerait au bout du compte.) Si vous pensez que votre mappage mappingsSystemUserNameMapper.csv est prêt, essayez de vous y connecter avec la méthode de source de données CSV de Tableau Desktop, et liez-le au référentiel PosgreSQL de votre système cible, plus spécifiquement la table system_users, qui contiendra toutes les entrées pour chaque utilisateur Active Directory mappé. Établissez une jointure externe gauche entre mappingsSystemUserNameMapper.csv et system_users et utilisez-la pour créer une nouvelle feuille qui vérifiera que chaque colonne entrante Nom de la cible de l'utilisateur local a un nom de compte Active Directory correspondant valide dans system_users.)
 
Numéro d’article de la base de connaissances

001472270

 
Chargement
Salesforce Help | Article