La Tanche, la Séquence et la Migration

Temps de lecture : 3 min

Voici un petit conte à lire avant de s’endormir : comment en voulant gagner du temps j’ai planté ma base de données. La morale ? Même les petites bêtises laissent de grandes séquelles.

Il était une fois une Tanche (moi), une Séquence et une Migration qui vivaient ensemble dans un joli projet Symfony (ouais lé bo mon site).

Leur quotidien était bien réglé : la Séquence préparait les IDs, la Migration rangeait les schémas, et la Tanche… bon, lui, il codait (terme générique pour dire qu’il créait de la dette technique).

Chaque jour, la Séquence s’occupait de donner des IDs bien frais et bien ordonnés à la table que gérait l’entité Content.

La Migration, elle, ne faisait pas grand-chose en semaine, mais dès qu’il fallait réparer une bêtise, hop, elle enfilait sa cape et sauvait la base de données.

Tout roulait, jusqu’au jour où la Tanche, pris d’une soudaine envie d’aller plus vite que la musique, décida de faire une insertion manuelle.

Sans demander son avis à personne, il arriva en trombe dans la table, brandit un ID au hasard et s’écria :

“Allez hop, ce nouvel enregistrement aura l’ID 493, parce que j’aime bien le chiffre (ouais on peut pas écrire 49.3 !)”

La Séquence, outrée, n’en crut pas ses octets.

“Mais… mais… j’étais restée à 48 ! Maintenant, comment veux-tu que je suive ? Si j’envoie 49, ça va tout casser !”

Et ce qui devait arriver arriva : À la prochaine tentative d’ajout, PostgreSQL, sentant le chaos, refusa tout net d’insérer quoi que ce soit, lançant un grand cri d’erreur, aussi sonore qu’un “violates unique constraint” un soir d’orage.

La Tanche, tout penaude, courut voir la Migration :

“O Migration, ma sauveuse, que puis-je faire pour réparer mon forfait ?”

La Migration, qui en avait vu d’autres, répondit :

“Il te suffit de me laisser de taper ceci dans ton terminal :

$ php bin/console dbal:run-sql "SELECT setval('content_id_seq1', (SELECT COALESCE(MAX(id), 0) FROM content), true);" | cat

Ainsi, la Séquence retrouvera ses petits et plus jamais tu ne lui joueras un pareil tour !”

La Tanche promit (la main sur le cœur et les doigts croisés dans le dos) de ne plus jamais insérer à la main sans prévenir ses amis.

Depuis ce jour, la Séquence et la Migration surveillent la Tanche du coin de l’œil, prêtes à intervenir à la moindre incartade.

Et c’est ainsi que, dans la douce symphonie du projet, chacun retrouva sa place.

Mais si jamais vous croisez une Tanche tentée de forcer la main à sa Séquence, rappelez-lui cette fable : il n’y a pas de petite bêtise, seulement des séquences rancunières.