我尝试在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(手动设置)仍然无效。
答案 0 :(得分:3)
使用InnoDB
表时,您是否忘记提交交易?
<强>更新强>
由于它是MyISAM
,我还会问几个愚蠢的问题:
您确定要对一个数据库发出UPDATE
和SELECT
吗?
我曾经拥有一个拥有相同架构的大型数据库,当有人从错误的数据库中删除某些东西时,这曾经是一个问题。
尝试REPAIR
你的桌子,这也可能是问题。
答案 1 :(得分:2)
只是为了验证 - 是profile_views为零还是null?如果你将1添加到null,你仍然会得到null,这可能是你的问题。
ETA:
所以它不是空的。下一个问题是,你有自动提交,或者,如果没有,你是否发出了“提交”?可能是它已更新,但您的更新从未提交过。
答案 2 :(得分:1)
如果它为null,则不会递增。
UPDATE profil_perso
SET profile_views = IF(profile_views,profile_views+1,1)
WHERE id = 30537
答案 3 :(得分:0)
添加一些parens和coalesce以查看是否修复了它:
UPDATE profil_perso
SET profile_views = ( COALESCE(profile_views,0) + 1 )
WHERE id = 30537