因为没有明显的原因(对我来说)我无法在MySQL上对表进行更新。版本是:已解决。疯狂! MySQL更新无法在一张桌面上工作,在另一张桌面上正常工作
mysql Ver 15.1 Distrib 10.0.29-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
我所做的是以下几点: 我添加了一个新的表到现有数据库。该表是这样的:
CREATE TABLE `drawdata` (
`year` int(11) NOT NULL,
`left1` varchar(40) NOT NULL,
`left2` varchar(40) NOT NULL,
...
...
`left31` varchar(40) NOT NULL,
`left32` varchar(40) NOT NULL,
PRIMARY KEY (`year`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
当我在MySQL的CLI下一个查询,我得到
update drawdata set year=2017;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0 Changed: 0 Warnings: 0
而且什么也没有更新。 (一个SELECT证明了这一点)。无法使用phpMyAdmin。 没有错误,没有警告。 mysql.log中也没有。
但是,我可以做另一张表上的完全相同的声明,也有列年作为主键。
刚发现在表上做了一个INSERT工作,如果我在那之后做一个UPDATE,UPDATE也可以。
当我执行DELETE FROM drawdata
时,清除表中的所有数据,然后再次执行UPDATE语句,同样的问题又回来了:0行受影响,0匹配。
所以,我想,最终的问题是:
为什么我不能做一个更新的一个空表/列,而我可以做到这一点的另一个表?
有什么建议吗?
@Mureinik'year = 2017'不是一个条件。这是要做的更新。 –
你想更新一个空表?如果它不是空的,那么它会失败.. PK是在年份列上,您希望在表中的所有行(如果有)在2017年更新。只有在表中有一行时,这才有效。你可以给我们一个表中的数据的例子吗? –
我不明白你的意图是什么。我在你的SQL查询中没有看到任何过滤器,为什么不使用'WHERE'语句?我的意思是,我会'更新drawdata SET left1 =“something”WHERE year = 2017' – russellhoff