2012-01-27 50 views
0

這使我瘋了..我用過調試器,我已經重新啓動了我的電腦,mysql服務器,控制檯,終端,一切......爲什麼錯誤的值被存儲在數據庫中?爲什麼將錯誤的值保存到數據庫中?拉出毛髮

下面是寫行..這之前也有一些制定者..

msg.contentID = twt.attrs["id_str"] 
msg.save 

下面是調試器輸出:

SQL (0.4ms) INSERT INTO `messages` (`content`, `contentID`, `created_at`, `reply_to`, `sender_tid`, `updated_at`, `user_id`) VALUES (NULL, 84756616506912768, '2012-01-27 00:01:58', 'ZachACole', 115192457, '2012-01-27 00:01:58', 32) 
(0.5ms) COMMIT 

我立刻在數據庫中檢查值contentID應該是'84756616506912768'..並且它不是..這是一個不同的值,但它的每次都有相同的不同值...我的消息模型沒有對其進行驗證..正如您在此處看到的那樣:

class Message < ActiveRecord::Base 
    belongs_to :user 

    scope :tweet, order("contentID desc") 
end 

我該如何調試?

============

更新:我每次得到的值是:2147483647

+0

這是一個非常大的數字。總是插入的值是什麼?我猜是有什麼事情發生,因爲保存該數字所需的大小遠大於列類型的大小。什麼是列類型? – MrDanA 2012-01-27 00:10:16

+0

您對數據庫中的字段有任何驗證嗎?你每次得到的'同樣的價值'是什麼? – sscirrus 2012-01-27 00:10:26

+0

@sscirrus我沒有對數據庫進行任何驗證,正如您從描述中的消息模型中所看到的那樣... – Inc1982 2012-01-27 00:13:22

回答

1

是在數據庫中的BIGINT列?標準INT太小而無法保存該數字。

+0

哦: - |我會將其切換並回報 – Inc1982 2012-01-27 00:14:26

+0

謝謝,您是正確的,轉換爲字符串,它的工作原理。儘管MrDanA首先報道了你的答案,我可以接受。謝謝! – Inc1982 2012-01-27 00:22:48

+0

她工作過嗎? – psyklopz 2012-01-27 00:23:12