没有明显的原因(对我来说......)我不能再在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也可以正常工作。
当我执行DELETE FROM drawdata
,清除表中的所有数据,然后再次执行UPDATE语句时,同样的问题又回来了:0行受影响,0匹配。
所以,我想,最终的问题是:
为什么我不能在空表/列上执行UPDATE,而我可以在另一个表上执行此操作?
有什么建议吗?
答案 0 :(得分:0)
傻傻的我。
至少我的昵称被选中了......
在列年中插入值2017后,我能够对所有列执行UPDATE。按设计工作。现在我需要......
答案 1 :(得分:0)
您正在尝试更新空表。这就是你的UPDATE语句永远不会做任何事情的原因。
要记住的其他事项,您的UPDATE语句会尝试将所有年份列修改为2017年,但是这会将其列为PK。您将遇到PK冲突,请记住PK的定义:
PRIMARY KEY约束唯一标识a中的每条记录 数据库表。
主键必须包含UNIQUE值。
主键列不能包含NULL值。
大多数表应该有一个主键,每个表只能有 一键主键。