轉自:https://blog.csdn.net/June7_/article/details/99991680
問題描述
使用Django框架,在使用model操作數據庫的時候,出現 Django "OverflowError: Python int too large to convert to C long" 錯誤。
以下參照https://blog.csdn.net/June7_/article/details/99991680 解決該問題。
注意:該錯誤出現原因不僅是model數據庫操作導致的,可能還有其他原因,這里只針對數據庫操作時報的錯誤。
解決問題
PS:如果不想看流程的,可以直接跳到文章末尾看解決方法。
今天學習Django的時候遇到這個問題,
谷歌,百度了一下,連StackOverflow都沒有詳細的問題描述和解法,都是和Python解釋器相關的問題或者是numpy等等。
就是找不到和Django相關的東西,而且翻看相關錯誤信息也都是解釋器的包的問題,各種系統文件什么的,唯一一處自己寫的文件的問題就是return的response,但是這個看不出什么問題啊。QWQ
索性就慢慢看源代碼和報錯信息試試能不能找到問題和解法。
翻到最底下會發現有這一段:
可以注意到這里面和datetime相關,然后我嘗試注釋掉 models.py里面的 date相關的那一行,然后重新初始化數據庫,結果界面訪問正常,所以這里就已經鎖定問題源了,就是 date這一行的問題。
這里我一開始寫的是DateField,
轉到數據庫,可以發現這里添加時間是精確時間,即 年-月-日 時-分-秒。因為 DateField是日期項,沒法精確到時分秒。所以這里出現溢出錯誤。將 DateField改為 DateTimeField,重新初始化數據庫以后問題就消失了,能夠正常訪問。
Ok,問題解決!