La requête mySQL UPDATE renvoie "0 rows affected"
J'ai cette requête:
UPDATE phonecalls
SET Called = "Yes"
WHERE PhoneNumber = "999 29-4655"
Ma table est phonecalls
j'ai une colonne nommée PhoneNumber
. Tout ce que je veux mettre à jour une colonne nommée Called
à "oui".
Une idée de ce que je fais de mal? quand je reviens à ma requête, il dit 0 lignes affectées.
source d'informationauteur | 2010-02-02
Vous devez vous connecter pour publier un commentaire.
Que les amphétamines et Yada proposé, vérifier avec un
SELECT
si votre numéro de téléphone est dans la table.Mais gardez à l'esprit: Si la valeur de
called
de la ligne en question est déjà "Oui", mysql ne va pas changer la valeur et sera donc de retour "0 lignes affectées". Donc, assurez-vous également de vérifier la valeur actuelle decalled
Une autre raison pour 0 nombre de lignes affectées que j'ai observé: mauvais type de données. Si la colonne que vous souhaitez mettre à jour est un entier ou un booléen, et que vous définissez une chaîne, il ne sera pas mis à jour, mais vous obtiendrez également pas d'erreur.
Pour résumer les autres stratégies/idées de ce post:
SELECT
déclaration, si votre OÙ les œuvres et renvoie les résultats.Le problème est peut-être qu'il n'y a pas d'enregistrements avec
PhoneNumber == "999 29-4655"
.Essayer cette requête:
Si elle ne retourne rien, alors il n'ya pas de lignes qui correspondent.
Pour le bénéfice de tout le monde ici à partir de Google, ce problème a été causé par moi parce que j'étais en train d'ajouter à un champ vide à l'aide de
CONCAT()
.Si
data
estNULL
puisCONCAT()
retourneNULL
(en ignorant le deuxième paramètre), de sorte que la valeur ne change pas (mise à jour d'unNULL
valeur à unNULL
valeur), d'où le 0 lignes mises à jour.Dans ce cas, la modification à la
CONCAT_WS()
fonction plutôt que fixe le problème.Essayer
select count(*) from phonecalls where PhoneNumber = "999 29-4655";
Qui vous donnera le nombre de lignes correspondantes. Si le résultat est égal à 0, il n'y a pas une ligne dans la base de données qui correspond à.-Assurez-vous que cela retourne un résultat.
Si elle ne retourne aucun résultat que le filtre
WHERE PhoneNumber = '999 29-4655'
n'est pas correct.C'est ma sugestion:
Et assurez-vous avec la casse du nom de la table et du champ.
Si les valeurs sont les mêmes, MySQL ne sera pas de mise à jour de la ligne (sans déclencher un avertissement ou erreur), de sorte que le nombre de lignes affectées sera de 0.