mercredi 13 mars 2019

Résoudre l'erreur de mise à jour de TT-RSS (base 136 vers 137)

Nan parce que bon, c'est bon au bout d'un moment aussi…

Depuis quelques mois maintenant, Tiny-Tiny RSS ne maintient plus de version stable mais un dépôt git sur lequel il suffit de « puller » la dernière version. Et comme pour les versions antérieures, de temps en temps, il y a une mise à jour qui oblige à faire une mise à jour du schéma de la base.

En l'occurence, la mise à jour du 2019-03-10 contient une contrainte d'unicité supplémentaire sur une table.

Après la mise à jour du code, TT-RSS demande donc à mettre à jour la table en question.

Et là, c'est le drame :

FAIL!!

To the Batmobile !!

Bon évidemment, premier réflexe, aller vérifier que le problème n'est pas déjà répertorié ailleurs (tout l'avantage d'être un poil en retard sur ses mises à jour, c'est qu'on a nettement moins de chance d'être le premier à tomber sur un bogue).

Le souci est donc connu mais en l'occurence la solution proposée ne fonctionne pas. Démonstration :

> DELETE f1 FROM ttrss_feeds f1 INNER JOIN ttrss_feeds f2 
WHERE f1.id < f2.id AND f1.feed_url = f2.feed_url 
AND f1.owner_uid = f2.owner_uid;
Query OK, 0 rows affected (1.26 sec)

Il n'y a de toute évidence pas de lignes en doublon donc. Mais pourtant, l'index n'arrive pas à se créer.

Alors pourquoi qu'est-ce ?

C'est pas la taille qui compte mais… on n'a pas déjà fait cette blague ?

Visiblement, ce n'est donc pas un souci de doublon mais un souci autre. À y regarder de plus près, l'index en question est créé avec une limite pour le champs feed_url. Et en fait, c'est parfaitement normal. Si l'on essaie de créer l'index sans longueur, MariaDB se fâche tout rouge :

> alter table ttrss_feeds add constraint ttrss_feeds_feed_url_owner_uid_key unique (feed_url, owner_uid);
ERROR 1170 (42000): BLOB/TEXT column 'feed_url' used in key specification without a key length

En fait, un index texte doit forcément contenir une longueur fixe. Mais du coup, est-ce que ce ne serait pas ça le problème ? Retour sur MariaDB :

> select count(*) from ttrss_feeds;
+----------+
| count(*) |
+----------+
|      589 |
+----------+
> select count(distinct feed_url, owner_uid) from ttrss_feeds;
+-------------------------------------+
| count(distinct feed_url, owner_uid) |
+-------------------------------------+
|                                 589 |
+-------------------------------------+
> select count(distinct substr(feed_url,1,255), owner_uid) from ttrss_feeds;
+---------------------------------------------------+
| count(distinct substr(feed_url,1,255), owner_uid) |
+---------------------------------------------------+
|                                               587 |
+---------------------------------------------------+

Twingo ! Le problème n'est donc pas l'unicité des flux, mais l'unicité des 255 premiers caractères des flux. Et en cherchant un peu le problème vient essentiellement de Cheky, le générateur de flux RSS à partir d'alerte LeBonCoin. Ce dernier génère de très très longs URLs avec beaucoup d'informations très similaires dedans.

Du coup, on fait quoi ? À part remonter le problème au développeur (ce que je vais m'empresser de faire), mais on ne peut malheureusement pas créer d'index plus long que 255 caractères.

Du coup, il faut simplement essaie de « distinguer » un peu plus les URLs en question (ouais, moi aussi, je voulais te proposer une solution bien plus poilue mais j'ai plus rien en stock).

Bon du coup, tu as pu faire ta mise à jour et tu es heureux. Tu peux maintenant prendre une bière bien méritée.

mardi 12 mars 2019

XMPP et OMEMO sont dans un bâteau (1/2)

J'ai fait une rime \o/

Lire la suite

lundi 25 février 2019

Ne m'appelez plus privé !

Tu peux m'appeler Simone si tu veux…

Lire la suite

vendredi 14 septembre 2018

Passer un disque fait pour le BIOS en UEFI avec BTRFS

Ça a pas l'air compliqué comme ça, mais en fait, c'est hyper chiant…

Lire la suite

jeudi 16 août 2018

LXD/LXC, Docker et autres joyeusetés (partie 2 sur beaucoup potentiellement…)

Où l'on met beaucoup d'ambiance dans cette boîte jaune…

Lire la suite

lundi 6 août 2018

LXD/LXC, Docker et autres joyeusetés (partie 1 sur beaucoup potentiellement…)

Et là, la marmotte, elle met le chocolat dans le papier d'alu.

Lire la suite

samedi 24 mars 2018

Ma République est morte

Plus la peine de tenter une réanimation, c'est juste fini…

Lire la suite

mercredi 4 janvier 2017

uBlock Origin : ne plus filtrer Piwik

Parce qu'autant je chie allègrement sur Google Analytics, autant Piwik, c'est le bien (y)

Lire la suite

lundi 26 décembre 2016

Z-Push, IMAP, sexe et NextCloud

Peut-être pas de sexe finalement, vous n'avez pas été très sage cette année…

Plus sérieusement, je n'ai vu que très peu de ressources en français sur ce sujet, alors que je pense que c'est plutôt utile et rigolo à faire.

Lire la suite

lundi 15 février 2016

Microsoft, je te chie dans la bouche

Tu es le SIDA de l'Internet et j'ai envie de t'enculer le cerveau…

Lire la suite

lundi 28 septembre 2015

mdadm + LVM + ext4 vers BTRFS sans larme

Mais avec un paquet de lubrifiant quand même…

Lire la suite

lundi 2 février 2015

OpenWRT et dhcp6c : la méthode Barrier Breaker

Parce que les tutos obsolètes, ça commence à bien faire !

Lire la suite

vendredi 22 août 2014

Passerelles VPN redondantes avec OpenBSD et BIRD

vpn_redondant_2_operateurs.png

BIRD, c'est bon, mangez-en !

Lire la suite

vendredi 12 juillet 2013

OpenBSD en lecture seule

Parce que de temps en temps, il faut savoir fermer sa gueule…

Lire la suite

vendredi 15 février 2013

DNSSEC : méthode BIND9.9

Nan, parce que la précédente méthode, c'était vraiment _hardcore_

Lire la suite

vendredi 5 octobre 2012

Fabriquer un lecteur de carte mémoire Nintendo 64 (4)

Pour quelques lignes de C de plus…

Lire la suite

vendredi 21 septembre 2012

Fabriquer un lecteur de carte mémoire Nintendo 64 (3)

J'avais jamais vu autant de bits d'un coup…

Oui, je sais, elle est facile.

Lire la suite

vendredi 14 septembre 2012

nginx : ne pas faire de la merde avec PHP

Du pain, du vin, du PHP

Le gars dans la pub là

Lire la suite

vendredi 31 août 2012

Fabriquer un lecteur de carte mémoire Nintendo 64 (2)

Schéma de branchement de la manette N64

Les spécifs un peu détaillés du bordel

Lire la suite

vendredi 24 août 2012

Fabriquer un lecteur de carte mémoire Nintendo 64 (1)

Diantre, mais pourquoi fabriquer une merde pareille ?

Lire la suite

- page 1 de 3