事件为什么会改变不相干字段的值?

吉普赛的歌 2018-01-15 10:12:36
#增加测试表及测试数据
create table if not exists a(
id int primary key,
c datetime not null,
d int not null
);
truncate table a;
insert into a(id,c,d) values(1,'2018-01-15 06:00:00',0);
insert into a(id,c,d) values(2,'2018-01-15 10:00:00',0);
#关闭再开启事件
#SET GLOBAL event_scheduler = OFF;
SET GLOBAL event_scheduler = ON;
show variables like '%event_scheduler%';
#创建事件 禁用->删除->创建
#alter event `eventTest` disable; #如果有先禁用避免没有生效
drop event if exists `eventTest`;
CREATE EVENT `eventTest`
ON SCHEDULE
EVERY '2' second #测试成功后可改成 Hour
DO update a set d=d+1 where TIMESTAMPDIFF(Hour, c, '2018-01-15 10:00')>2;


然后再查询:
mysql> select * from a;
+----+---------------------+---+
| id | c | d |
+----+---------------------+---+
| 1 | 2018-01-15 10:09:23 | 1 |
| 2 | 2018-01-15 10:00:00 | 0 |
+----+---------------------+---+
2 rows in set (0.02 sec)


会什么事件中更新, 会改成不相干字段的值呢?
MySQL bug? 当前版本:
mysql> select version();
+------------+
| version() |
+------------+
| 5.7.14-log |
+------------+
1 row in set (0.02 sec)


...全文
213 点赞 收藏 7
写回复
7 条回复
吉普赛的歌 2018年01月15日
引用 5 楼 zjcxc 的回复:
怀疑你建表的时候用的 timestamp, 或者是设置了 ON UPDATE 的默认值
timestamp 本意是时间戳, 是我无知了, 多谢。给分结贴!
回复 点赞
吉普赛的歌 2018年01月15日
引用 5 楼 zjcxc 的回复:
怀疑你建表的时候用的 timestamp, 或者是设置了 ON UPDATE 的默认值
最开始确实用的是 timestamp , 后来老是出现事件更新为当前时间, 于是改了代码, 但由于是 create table if not exits , 表结构实际上还是原来的…… 不明白 MySQL 为什么要帮我在 timestamp 类型字段上加一个默认值? 这不就是帮倒忙吗?
#创建表的代码是:
CREATE TABLE `a` (
  `id` int(11) NOT NULL,
  `c` timestamp NOT NULL,
  `d` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ;

# show create table a 显示出来是:
CREATE TABLE `a` (
  `id` int(11) NOT NULL,
  `c` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `d` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
回复 点赞
怀疑你建表的时候用的 timestamp, 或者是设置了 ON UPDATE 的默认值
回复 点赞
表结构不是你给出的吧? show create table a 看下
回复 点赞
吉普赛的歌 2018年01月15日
@zjcxc--个人微信公共号同名 呼叫邹老大
回复 点赞
rucypli 2018年01月15日
好奇怪 打开binlog看看执行了什么
回复 点赞
吉普赛的歌 2018年01月15日
按道理, 只可能更新 id=1 的记录的 d 字段的值, 但为什么 id=1 的 c 字段的值莫明其妙地更新为当前时间了???
回复 点赞
发动态
发帖子
MySQL
创建于2007-09-28

2.4w+

社区成员

5.5w+

社区内容

MySQL相关内容讨论专区
社区公告
暂无公告