Увеличение в MySQL - PullRequest
       20

Увеличение в MySQL

0 голосов
/ 08 апреля 2009

Я пытаюсь увеличить поле в mysql, но кажется, что оно не работает по некоторым причинам ...

Это запрос, который я запускаю в запросе mysql:

UPDATE profil_perso
SET profile_views = profile_views +1
WHERE id = 30537

В строке состояния написано: 1 строка, затронутая последней командой. Результат не возвращен. Но это не сработало. Сначала я подумал, что это было просто потому, что не было никаких рядов вообще. Итак, я запустил этот запрос:

SELECT *
FROM profil_perso
WHERE id = 30537

И нашел 1 строку, а поле profile_views все еще в 0 ...

Есть идеи, почему это так?

[править] profile_views = 1 (устанавливается вручную) в данный момент, и он все еще не работает.

Ответы [ 4 ]

3 голосов
/ 08 апреля 2009

Разве вы не забыли совершить транзакцию при работе с InnoDB таблицей?

UPDATE:

Так как это MyISAM, я задам еще пару глупых вопросов:

  1. Вы абсолютно уверены, что выпускаете UPDATE и SELECT для одной базы данных?

    Когда-то у меня была большая ферма баз данных с идентичными схемами, и это было проблемой, когда кто-то удалял что-то из неправильной базы данных.

    • Разве вы не используете какое-то клиентское кэширование на своем клиенте? Каким клиентом вы пользуетесь?

И попробуйте REPAIR ваш стол, это тоже может быть проблемой.

2 голосов
/ 08 апреля 2009

Просто чтобы проверить - это profile_views ноль или ноль? Если вы добавите 1 к нулю, вы все равно получите ноль, так что это может стать вашей проблемой.

ETA:

Так что это не ноль. Следующий вопрос: включен ли автокоммит или, если нет, вы выдавали коммит? Возможно, оно было обновлено, но ваше обновление не было зафиксировано.

1 голос
/ 08 апреля 2009

Если это ноль, не будет увеличиваться.

UPDATE profil_perso
SET profile_views = IF(profile_views,profile_views+1,1)
WHERE id = 30537
0 голосов
/ 08 апреля 2009

Добавьте несколько паренов и объединение, чтобы увидеть, исправит ли это:

UPDATE profil_perso
SET profile_views = ( COALESCE(profile_views,0) + 1 )
WHERE id = 30537
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...