Erreur pgAdmin 4 : Le contexte

En voulant mettre à jour avec pgAdmin 4 des données de MeetTheCoders (dans le cadre de la rédaction des articles de notre tutoriel Nuxt.js + Adonis.js), lorsque vous éditez des colonnes et que vous sauvegardez, vous pouvez rencontrer l’erreur suivante :

PgAdmin 4 : erreur 'int' object has no attribute 'replace'
pgAdmin 4 : erreur ‘int’ object has no attribute ‘replace’

Avant tout, cette erreur se produit avec pgAdmin 4 en version 4.9 (et potentiellement d’autres versions avant la 4.10).

Cela vous empêche de mettre à jour vos données directement dans la table qui affiche les données.

Un turn-arround possible

Il faut souligner que cette erreur ne se produit qu’avec l’édition dynamique de données dans pgAdmin. En effet, la bonne vieille requête à la main vous permettra de contourner temporairement le problème.

update public.languages set title = 'JavaScript' where id = 2

Erreur pgAdmin 4 : La solution définitive

En effectuant une recherche on trouve un sujet StackOverflow qui oriente vers une solution définitive. Il suffit tout simplement d’upgrader votre version de pgAdmin 4 vers la 4.10 ou supérieure.

Etant donné que j’utilise Laragon pour mes développements, il est nécessaire d’installer la toute dernière version de PostgreSQL et ensuite de sélectionner cette nouvelle version.

Si vous n’utilisez pas Laragon (« Monumentale erreur ! » dirait Jack Slater dans Last Action Hero), je vous laisse mettre à jour votre version en suivant les consignes officielle de PostgreSQL.

Etape 1 : récupérer les sources

La première étape consiste à récupérer les sources zip depuis le site officiel.

PgAdmin 4 : mise à jour depuis l'archive PostgreSQL officielle
pgAdmin 4 : mise à jour depuis l’archive PostgreSQL officielle

J’étais en version 11.4.3 de PostgreSQL, nous allons passer en version 11.5. Si vous souhaitez savoir ce que comprends cette version, je vous invite à consulter la release note associée.

Etape 2 : décompresser les sources dans le bon répertoire 😉

Ainsi rendez vous dans le dossier bin/postgresql de votre installation de Laragon.

pgAdmin 4 : répertoire d'installation PostgreSQL
pgAdmin 4 : répertoire d’installation PostgreSQL

Ensuite, une fois dézippé, vous devriez avoir un nouveau répertoire avec la nouvelle version de PostgreSQL.

pgAdmin 4 mis à jour avec la version PostgreSQL 11.5
pgAdmin 4 mis à jour avec la version PostgreSQL 11.5

Si votre répertoire dézippé se nomme ‘pgsql’ tout simplement, pensez à le renommer avec le nom de la version que vous avez téléchargé. Cela vous permettra de vous y retrouver par la suite 😉

Etape 3 : Charger PostgreSQL à nouveau

Si tout s’est bien passé, vous pouvez à présent changer de version de PostgreSQL via l’interface de Laragon.

pgAdmin 4 : activation de la nouvelle version de PostgreSQL et la nouvelle version de pgAdmin 4
pgAdmin 4 : activation de la nouvelle version de PostgreSQL et la nouvelle version de pgAdmin

À cette fin, cliquez sur la version que vous venez d’installer et qui doit apparaître dans le listing des versions installées.

Etape 4 : Lancer pgAdmin4 et vérifier que l’erreur ne se produit plus

Enfin, une fois PostgreSQL lancé, ouvrez pgAdmin et recommencer l’opération de modifications de vos données de façon dynamique. Pour sauvegarder vos changements vous pouvez appuyer directement sur la touche ‘F6’ de votre clavier.

Si tout va bien, vos changements doivent être pris en compte sans qu’apparaisse à nouveau l’erreur objet de ce court article ‘int’ object has no attribute ‘replace’.

pgAdmin 4 : mise à jour et fonctionnelle et plus aucune erreur lors de la mise à jour dynamique des données
pgAdmin 4 : mise à jour et fonctionnelle et plus aucune erreur lors de la mise à jour dynamique des données

Conclusion sur ce problème avec pgAdmin4

Un petit problème de rien du tout, mais qui était tout de même très gênant. Heureusement, le web regorge de ressources pour pouvoir solutionner tous les petits problèmes que l’on peut rencontrer.

Surtout, n’hésitez pas à me faire part de vos commentaires ou vos autres astuces concernant ce problème.

A bientôt.