亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

秒殺成功后,再次刷新頁面,為什么會把秒殺開始時間改變了??

秒殺成功后,再次刷新頁面,為什么會把秒殺開始時間改變了??該怎么處理

正在回答

4 回答

準備看高并發 就發現了這個問題!nice!??!

0 回復 有任何疑惑可以回復我~
#1

reeeex

我還以為是自己哪里的參數傳錯 還是sql寫錯了
2018-03-10 回復 有任何疑惑可以回復我~

給大家一個詳細的步驟。。

修改了數據庫里seckill表的start_time的屬性就好了,

把DEFAULT?CURRENT_TIMESTAMP?ON UPDATE,改為??DEFAULT '0000-00-00 00:00:00'


不知道為什么當時sql創建完后start_time的屬性是?CURRENT_TIMESTAMP?ON UPDATE。。。

老師當時:

http://img1.sycdn.imooc.com//59ccd71e00011c1408320254.jpg

修改后:

http://img1.sycdn.imooc.com//59ccd7820001d59506390258.jpg

原因:

timestamp如果設置成CURRENT_TIMESTAMP ,當執行insert操作的時候,會插入當前系統時間。

如果是ON UPDATE CURRENT_TIMESTAMP,當執行update操作的時候,會跟著更新為當前UPDATE操作時的時間。

我們項目里在執行減庫存的時候,執行的是update語句:

? ? ? ? ? ? update?

? ? ? ? ? ? ? ? seckill?

? ? ? ? ? ? set

? ? ? ? ? ? ? ? number = number -1

? ? ? ? ? ? ?where seckill_id=#{seckillId}

? ? ? ? ? ? ?and? start_time <![CDATA[ <= ]]> #{killTime}

? ? ? ? ? ? ?and end_time>=#{killTime}

? ? ? ? ? ? ?and number>0;

所以會隨著這個秒殺減庫存的操作改變start_time的值。


1 回復 有任何疑惑可以回復我~

同樓主,我的項目秒殺成功后"秒殺開始時間"就變成了剛執行秒殺的時間了。。。

0 回復 有任何疑惑可以回復我~

問題已經找到,結果太出乎意料了,是數據庫的秒殺開始時間列為|“更新”了(╯︵╰)(╯︵╰)(╯︵╰)

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

秒殺成功后,再次刷新頁面,為什么會把秒殺開始時間改變了??

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號