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

mysql查找字段為什么會無故更新?

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

問題描述

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

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

相關(guān)代碼

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


CREATE TABLE `aws_orders` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id 無意義',
  `oid` varchar(32) DEFAULT '0' COMMENT '訂單ID',
  `plat_oid` varchar(64) DEFAULT '0' COMMENT '平臺交易號',
  `uid` int(10) unsigned DEFAULT '0' COMMENT '用戶ID',
  `add_time` int(10) unsigned DEFAULT '0' COMMENT '創(chuàng)建時間',
  `amount` int(10) unsigned DEFAULT '0' COMMENT '訂單金額',
  `pay_amount` decimal(7,2) unsigned DEFAULT '0.00' COMMENT '支付金額',
  `pay_time` varchar(20) DEFAULT '0' COMMENT '支付時間',
  `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 '訂單來源 1網(wǎng)站 2移動端  3IOS 4Android',
  `coupon_id` int(10) unsigned DEFAULT '0' COMMENT '優(yōu)惠碼ID',
  `from_plat` tinyint(3) unsigned DEFAULT '0' COMMENT '訂單來源 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團購 2小團',
  `full_cut` varchar(20) DEFAULT '0' COMMENT '滿減活動 減掉的金額',
  PRIMARY KEY (`id`),
  KEY `i_oid` (`oid`) USING BTREE,
  KEY `i_uid` (`uid`)
) ENGINE=InnoDB AUTO_INCREMENT=48035 DEFAULT CHARSET=utf8

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

一些錯誤數(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 |
+------------+-----------------+----------------------+--------+-------+

這里也有個點,本來pay_time存的整數(shù),數(shù)據(jù)錯亂后變成了浮點型的數(shù)字時間戳。

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

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

回答
編輯回答
莓森

從更新的情況來說這個字段應(yīng)該是存取了microtim(true)

項目里搜索下這個表達式排查

或者

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

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

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

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

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

mysql數(shù)據(jù)庫的錯誤數(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