課程
/后端開發
/Java
/Java高并發秒殺API之web層
秒殺成功后,再次刷新頁面,為什么會把秒殺開始時間改變了??該怎么處理
2017-05-13
源自:Java高并發秒殺API之web層 5-4
正在回答
準備看高并發 就發現了這個問題!nice!??!
reeeex
給大家一個詳細的步驟。。
修改了數據庫里seckill表的start_time的屬性就好了,
把DEFAULT?CURRENT_TIMESTAMP?ON UPDATE,改為??DEFAULT '0000-00-00 00:00:00'
不知道為什么當時sql創建完后start_time的屬性是?CURRENT_TIMESTAMP?ON UPDATE。。。
老師當時:
修改后:
原因:
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的值。
同樓主,我的項目秒殺成功后"秒殺開始時間"就變成了剛執行秒殺的時間了。。。
問題已經找到,結果太出乎意料了,是數據庫的秒殺開始時間列為|“更新”了(╯︵╰)(╯︵╰)(╯︵╰)
舉報
Java實現高并發秒殺API的第三門課,介紹Web層的設計和實現
3 回答為什么點擊開始秒殺后報404
4 回答第一次點擊開始秒殺后不會出現秒殺成功還是系統異常這些,就是不會跳轉
2 回答detail頁面點擊“開始秒殺”后,沒有反應
7 回答開始秒殺的按鈕沒看見
1 回答SMM秒殺
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2018-03-10
準備看高并發 就發現了這個問題!nice!??!
2017-09-28
給大家一個詳細的步驟。。
修改了數據庫里seckill表的start_time的屬性就好了,
把DEFAULT?CURRENT_TIMESTAMP?ON UPDATE,改為??DEFAULT '0000-00-00 00:00:00'
不知道為什么當時sql創建完后start_time的屬性是?CURRENT_TIMESTAMP?ON UPDATE。。。
老師當時:
修改后:
原因:
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的值。
2017-09-28
同樓主,我的項目秒殺成功后"秒殺開始時間"就變成了剛執行秒殺的時間了。。。
2017-05-13
問題已經找到,結果太出乎意料了,是數據庫的秒殺開始時間列為|“更新”了(╯︵╰)(╯︵╰)(╯︵╰)