已提出类似的问题,但我似乎无法找到针对我的特定问题的解决方案。
尝试更新学生表中的“end_date”列,但我收到了 Matched: 1 Changed: 0 warnings: 0 作为消息。
这正是我所做的。
mysql> SELECT studentID,end_date FROM Student WHERE studentID = 256;
+-----------+----------+
| studentID | end_date |
+-----------+----------+
| 256 | NULL |
+-----------+----------+
1 row in set (0.00 sec)
mysql> UPDATE Student Set end_date = '2017-12-22' WHERE studentID = 256;
Query OK, 0 rows affected (0.01 sec)
Rows matched: 1 Changed: 0 Warnings: 0
mysql> SELECT studentID,end_date FROM Student WHERE studentID = 256;
+-----------+----------+
| studentID | end_date |
+-----------+----------+
| 256 | NULL |
+-----------+----------+
1 row in set (0.00 sec)
尝试将 end_date 更改为“2017-12-22”。选择查询中的 end_date 列的值与更新查询相比明显不同,因此我不确定发生了什么。为了仔细检查,我在更新查询后再次运行了选择查询。奇怪的是,我可以使用类似的更新语句来更改physical_date和start_date。
这是我的学生表上使用 SHOW CREATE TABLE 查询的更多上下文。
CREATE TABLE `Student` (
`studentID` int(11) NOT NULL AUTO_INCREMENT,
`last_name` varchar(45) NOT NULL,
`first_name` varchar(45) NOT NULL,
`sex` varchar(1) NOT NULL,
`DOB` date NOT NULL,
`age` decimal(5,2) NOT NULL,
`start_date` date NOT NULL,
`physical_date` date NOT NULL,
`status` varchar(20) NOT NULL COMMENT 'active\ninactive',
`room` varchar(20) NOT NULL,
`auth_type` varchar(1) NOT NULL COMMENT 'C\nS\nO',
`tuition_type` varchar(45) NOT NULL COMMENT 'full\npart',
`email` varchar(80) DEFAULT NULL,
`phone_number` varchar(12) DEFAULT NULL,
`end_date` date DEFAULT NULL,
`allow_picture` varchar(3) DEFAULT NULL COMMENT 'yes\nno',
PRIMARY KEY (`studentID`),
KEY `fk_Student_Room_idx` (`room`)
) ENGINE=InnoDB AUTO_INCREMENT=262 DEFAULT CHARSET=utf8 |
最佳答案
我相信您错过了列名称上的反引号
即
UPDATE Student SET `end_date`="2017-12-22" WHERE studentID=256;
关于MySQL 行匹配 : 1 changed: 0 warnings: 0 for date column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47765045/