鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)/ mysql查找字段為什么會(huì)無(wú)故更新?

mysql查找字段為什么會(huì)無(wú)故更新?

問(wèn)個(gè)問(wèn)題
mysql的order表不知為什么,支付時(shí)間(pay_time)這個(gè)字段數(shù)據(jù)會(huì)變。 隨機(jī)的某行,都是更新成 訂單添加時(shí)間+一段固定時(shí)間的和,不確定是哪個(gè)項(xiàng)目鏈接數(shù)據(jù)庫(kù)更新的數(shù)據(jù),或者是有調(diào)度任務(wù),怎么查?

問(wèn)題描述

問(wèn)題出現(xiàn)的環(huán)境背景及自己嘗試過(guò)哪些方法

嘗試查找了這些訂單的共性,但是字段上沒(méi)什么相同的地方,我個(gè)人的訂單有的被更新了, 有的沒(méi)有。

相關(guān)代碼

部分order表數(shù)據(jù)


CREATE TABLE `aws_orders` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id 無(wú)意義',
  `oid` varchar(32) DEFAULT '0' COMMENT '訂單ID',
  `plat_oid` varchar(64) DEFAULT '0' COMMENT '平臺(tái)交易號(hào)',
  `uid` int(10) unsigned DEFAULT '0' COMMENT '用戶ID',
  `add_time` int(10) unsigned DEFAULT '0' COMMENT '創(chuàng)建時(shí)間',
  `amount` int(10) unsigned DEFAULT '0' COMMENT '訂單金額',
  `pay_amount` decimal(7,2) unsigned DEFAULT '0.00' COMMENT '支付金額',
  `pay_time` varchar(20) DEFAULT '0' COMMENT '支付時(shí)間',
  `is_delete` tinyint(3) unsigned DEFAULT '0' COMMENT '已刪除訂單 0否 1是',
  `pay_type` tinyint(3) unsigned DEFAULT '0' COMMENT '支付方式 1微信 2支付寶 3免單',
  `from` tinyint(3) unsigned DEFAULT '0' COMMENT '訂單來(lái)源 1網(wǎng)站 2移動(dòng)端  3IOS 4Android',
  `coupon_id` int(10) unsigned DEFAULT '0' COMMENT '優(yōu)惠碼ID',
  `from_plat` tinyint(3) unsigned DEFAULT '0' COMMENT '訂單來(lái)源 0網(wǎng)站 1ios 2android 3IPAD 4Mobile',
  `pay_plat` tinyint(3) unsigned DEFAULT '0' COMMENT '支付終端 0網(wǎng)站 1ios 2android 3IPAD 4Mobile',
  `type` tinyint(3) unsigned DEFAULT '0' COMMENT '訂單類型 0普通訂單 1團(tuán)購(gòu) 2小團(tuán)',
  `full_cut` varchar(20) DEFAULT '0' COMMENT '滿減活動(dòng) 減掉的金額',
  PRIMARY KEY (`id`),
  KEY `i_oid` (`oid`) USING BTREE,
  KEY `i_uid` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=48035 DEFAULT CHARSET=utf8

有問(wèn)題的就是pay_time字段,本來(lái)是有值的,不知道為啥過(guò)一段時(shí)間一看,被更新了,已詢問(wèn)公司相關(guān)同事和leader,沒(méi)有人在后端操作。在支付回調(diào)和下訂單等所有和order表有關(guān)的操作中寫日志了,也沒(méi)有這個(gè)令人窒息的操作。

一些錯(cuò)誤數(shù)據(jù)


+------------+-----------------+----------------------+--------+-------+
| add_time   | pay_time        | oid                  | uid    | ispay |
+------------+-----------------+----------------------+--------+-------+
| 1524973498 | 1533008773.6939 | 1524973498601898106  |  60189 |     2 |
| 1524975582 | 1533010805.9663 | 15249755824529331409 | 452933 |     0 |
| 1525001588 | 1533036851.0322 | 15250015884533789469 | 453378 |     2 |
| 1525001992 | 1533037260.197  | 15250019924533763961 | 453376 |     2 |
| 1525002153 | 1533037381.1686 | 15250021534533765879 | 453376 |     2 |
+------------+-----------------+----------------------+--------+-------+

這里也有個(gè)點(diǎn),本來(lái)pay_time存的整數(shù),數(shù)據(jù)錯(cuò)亂后變成了浮點(diǎn)型的數(shù)字時(shí)間戳。

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

現(xiàn)在想知道是為啥被無(wú)故更新了

回答
編輯回答
莓森

從更新的情況來(lái)說(shuō)這個(gè)字段應(yīng)該是存取了microtim(true)

項(xiàng)目里搜索下這個(gè)表達(dá)式排查

或者

搜索所有可能更新該表操作的代碼檢查

2018年2月23日 18:35
編輯回答
伴謊

可以試試,
找公司的DBA,讓其查看下執(zhí)行過(guò)的SQL語(yǔ)句日志,找到對(duì)應(yīng)的sql,再到程序中找哪邊更新了。

2017年7月3日 20:01
編輯回答
心上人

查了binlog,能看到update 語(yǔ)句,但是并不知道是什么來(lái)源,,,數(shù)據(jù)貼到下面,參考下。

mysql數(shù)據(jù)庫(kù)的錯(cuò)誤數(shù)據(jù):

+-----------------+----------------------+--------+-------+--------------------+-----------------------------------------------------+
| pay_time        | oid                  | uid    | ispay | cha_time           | beizhu                                              |
+-----------------+----------------------+--------+-------+--------------------+-----------------------------------------------------+

| 1533037381.1686 | 15250021534533765879 | 453376 |     2 |  8035228.168600082 | NULL                                                |
+-----------------+----------------------+--------+-------+--------------------+-----------------------------------------------------+


binlog:

15733 #180731 19:43:01 server id 1  end_log_pos 1069695028 CRC32 0xc258c5e8   Update_rows: table id 172 flags: STMT_END_F
15734 ### UPDATE `julyedu`.`aws_orders`
15735 ### WHERE
15736 ###   @1=48183
15737 ###   @2='15250021534533765879'
15738 ###   @3='2018042921001004880586962338'
15739 ###   @4=453376
15740 ###   @5=1525002153
15741 ###   @6=1200
15742 ###   @7=389.00
15743 ###   @8='1525002163.0765'
15744 ###   @9=0
15745 ###   @10=2
15746 ###   @11=0
15747 ###   @12=0
15748 ###   @13=1
15749 ###   @14=1
15750 ###   @15=0
15751 ###   @16='0'
15752 ### SET
15753 ###   @1=48183
15754 ###   @2='15250021534533765879'
15755 ###   @3='2018042921001004880586962338'
15756 ###   @4=453376
15757 ###   @5=1525002153
15758 ###   @6=1200
15759 ###   @7=389.00
15760 ###   @8='1533037381.1686'
15761 ###   @9=0
15762 ###   @10=2
15763 ###   @11=0
15764 ###   @12=0
15765 ###   @13=1
15766 ###   @14=1
15767 ###   @15=0
15768 ###   @16='0'
15769 # at 1069695028
2018年2月27日 10:45