Erreur MySQL 1172 - Résultat était constituée de plus d'une ligne
J'obtiens cette erreur de MySQL lors de l'exécution d'une requête à l'intérieur d'une procédure stockée:
Code D'Erreur: 1172
Le résultat était constituée de plus d'une ligne
Je comprends l'erreur: je suis en train de faire un SELECT (...) INTO (var list)
, et ainsi, la requête doit retourner une seule ligne. Lorsque j'utilise LIMIT 1
ou SELECT DISTINCT
, l'erreur disparaît.
Cependant: lorsque j'exécute la requête d'origine manuellement (sans LIMIT
ou DISTINCT
), elle retourne une seule ligne. Je suis donc soupçonner j'ai peut-être tombé sur un bug MySQL. Personne ne sait ce qui pourrait se passer?
MODIFIER
Je poste le SQL comme demandé. Tout ce qui commence par un caractère de soulignement est une variable déclarée plus tôt à l'intérieur de la procédure. Quand je l'ai tester, je suis en remplacement de _cd_pai_vc
avec l'ID de l'enregistrement qui est à l'origine du problème.
SELECT a.valor, IFNULL(p.valor, 0), fn_cd2alias(ra.cd_registro), fn_cd2alias(IFNULL(p.valor,0))
INTO _valor, _cd_pai_vc, _alias_verbete, _alias_pai
FROM dados_registros ra
INNER JOIN dados_varchar255 a
ON a.cd_registro = ra.cd_registro
AND a.fl_excluido = 0
AND a.alias = 'vc-verbetes-termo'
LEFT OUTER JOIN dados_registros rp
INNER JOIN dados_int p
ON p.cd_registro = rp.cd_registro
AND p.fl_excluido = 0
AND p.alias = 'vc-remissoes-termo referenciado'
INNER JOIN dados_int pt
ON pt.cd_registro = rp.cd_registro
AND pt.fl_excluido = 0
AND pt.alias = 'vc-remissoes-tipo remissao'
AND fn_cd2alias(pt.valor) = 'hierarquica'
ON ra.cd_registro = rp.cd_entidade
AND rp.fl_excluido = 0
AND fn_cd2alias(rp.cd_modulo) = 'vc-remissoes'
WHERE ra.cd_registro = _cd_pai_vc
AND ra.fl_excluido = 0;
Ajouté le SQL. Je sais que le joint pourrait entraîner un surcroît de lignes à extraire, mais, comme je l'ai dit dans la question, quand je test avec un ID au lieu de
_cd_pai_vc
(et commentez la INTO
partie), je ne reçois qu'une seule ligne.Regarde cery lui comme _cd_pai_vc a la valeur faux: Juste pour le test, dans la procédure stockée la remplacer par la constante qui ne donne qu'une seule ligne lorsque vous exécutez manuellement et voir si l'erreur persiste.
La requête est en fait à l'intérieur d'une boucle sur la procédure. C'est de la traversée de l'arbre vers le haut, et
_cd_pai_id
est redéfini à l'actuel parent_id à chaque itération. J'ai essayé ce que vous avez suggéré de toute façon, le remplacement de la var avec chaque parent_id impliqués, à un moment, et je n'ai pas toutes les erreurs. Comment venir? Quand je SELECT
la valeur actuelle de la variable pour le débogage, il montre exactement les mêmes valeurs, j'ai essayé comme des constantes, mais puis-je obtenir de l'erreur.J'ai donné jusqu'à la compréhension de la cause, et ont juste ajouté DISTINCTE de la requête. Si je le revoir un jour, je vais poster des nouvelles ici.
OriginalL'auteur bfavaretto | 2012-02-29
Vous devez vous connecter pour publier un commentaire.
J'ai eu ce problème et a trouvé qu'il a disparu lorsque j'ai utilisé à la fois le nom de la table et le nom de colonne dans les instructions select, même les plus simples.
OriginalL'auteur David
J'ai eu le problème similaire et quand j'ai mis alias de table il a travaillé comme un charme.
OriginalL'auteur Nava Bogatee
J'ai eu le même message d'erreur dans mysql.
Erreur MySQL 1172 - Résultat était constituée de plus d'une ligne
Puis j'ai vu la question:
mysql procédure stockée erreur (1172, le Résultat était constituée de plus d'une ligne')
Mais ce n'était pas que je voulais dire.
LIMIT 1;
-n'était pas à la hauteur de mes attentes. Il sera juste de retour de la première ligne pour tous les cas.Puis j'ai commencé à regarder cette profondément et maintenant j'ai la solution.
Ce cas de se passer parce que le code de procédure stockée retourne plusieurs lignes et que c'était parce que j'avais beaucoup de
extra spaces and tab characters
dans mon code[le code que j'ai écrit pour la procédure stockée] et quand je l'ai enlevé avec juste un/deux onglet approprié caractères - c'était juste comme un machine volante.Je ne sais pas si c'est le même cas que vous êtes expérimenté avec. De toute façon donner un essai.
Merci.
OriginalL'auteur Ataboy Josef
J'ai eu le même problème, la solution par Nava Bogatee a travaillé comme un charme,
ci-dessous est une partie de la procédure
Cela ne fonctionnait pas, je n'ai aucune idée pourquoi.
Puis j'ai changé de ce
et cela a fonctionné.
Je suppose que pour une raison quelconque le Rno colonne est de retourner toutes les valeurs dans le tableau, c'est pourquoi le plusieurs lignes d'erreur.
OriginalL'auteur Ashish Surve