La sortie MySQL "show warnings" identifie les lignes problématiques par leur nombre. Quelle est la meilleure façon de voir rapidement toutes les données d'une telle ligne ?
Par exemple, après avoir exécuté un update
le résultat indique "1 avertissement" et le lancement de l'application show warnings
donne un message comme celui-ci : "Données tronquées pour la colonne 'personne' à la ligne 65278". Comment puis-je sélectionner exactement cette ligne ?
Voici un exemple concret qui explore le limit
solution :
create table test1 (
id mediumint,
value varchar(2)
);
insert into test1 (id, value) values
(11, "a"),
(12, "b"),
(13, "c"),
(14, "d"),
(15, "ee"),
(16, "ff");
update test1 set value = concat(value, "X") where id % 2 = 1;
show warnings;
Il en résulte ce message d'avertissement :
+---------+------+--------------------------------------------+
| Level | Code | Message |
+---------+------+--------------------------------------------+
| Warning | 1265 | Data truncated for column 'value' at row 5 |
+---------+------+--------------------------------------------+
Pour obtenir juste cette rangée 5, je peux faire ça :
select * from test1 limit 4,1;
ce qui se traduit par ceci :
+------+-------+
| id | value |
+------+-------+
| 15 | ee |
+------+-------+
Il semble donc que le limit
Le décalage (4) doit être inférieur d'une unité au numéro de ligne, et le numéro de ligne indiqué dans l'avertissement est celui de la table source de la mise à jour, sans tenir compte de l'ordre de priorité de la mise à jour. where
clause.