2013-12-13 47 views
-1

以下錯誤開始sheduled cron作業,每10分鐘:無法執行查詢:BIGINT的無符號數超出範圍後

Output from command /usr/bin/php -q /var/www/html/mydomain/_cron/cron.php .. 

PHP Notice: Can't execute query: BIGINT UNSIGNED value is out of range in '(`karsi_jiggo`.`user`.`hide_time` - 10)' 
UPDATE user SET hide_time=(hide_time-10), last_visit=last_visit WHERE hide_time>0 in /var/www/html/MyDomain/_include/lib/db.php on line 100 

Notice: Can't execute query: BIGINT UNSIGNED value is out of range in '(`karsi_jiggo`.`user`.`hide_time` - 10)' 
UPDATE user SET hide_time=(hide_time-10), last_visit=last_visit WHERE hide_time>0 in /var/www/html/MyDomain/_include/lib/db.php on line 100 
+0

你的問題是什麼? –

回答

1

根據您的輸出,它看起來像有在你的數據庫在數據hide_time> 0,但是< 10,因此,當您嘗試從hide_time中減去10時,它將成爲負數,並超出unsigned int的範圍。

要解決你可以

SELECT * from user 
WHERE hide_time > 0 
AND hide_time < 10 
+0

這裏是我的cron.php的生活,我該如何糾正它?如果($ min%1 == 0)DB :: execute(「UPDATE user SET hide_time =(hide_time-10),last_visit = last_visit WHERE hide_time> 0」); – Jonathan

+0

改變它的最安全的方法是將where子句更改爲WHERE hide_time> 10,這樣它永遠不會嘗試將其轉換爲負數。 –

0

你的查詢;

UPDATE user SET hide_time=(hide_time-10), last_visit=last_visit WHERE hide_time>0 

...會很樂意嘗試hide_time設置爲-5如果它是5在查詢的開始(對值hide_time> 0選擇,而不是更新後的值)

BIGINT UNSIGNED不能持有負值,因此錯誤。

相關問題