2012-09-17 49 views
0

我有一個django代碼的git倉庫。 Python版本2.6和django版本1.4。今天偶然來自我家的電腦,我試圖用python 2.7.3啓動django應用程序,併發生了一些奇怪的事情。我已經丟失了我的數據表中的所有數據。我不確定版本的衝突是原因還是其他原因。我怎樣才能找出桌子爲什麼是空的?它可能是一個MySQL問題?調試這個最好的策略是什麼?數據並不重要,但我不希望這種情況再次發生。django mysql所有數據消失

回答

0

我怎樣才能找出表爲空的原因?它可能是一個MySQL問題?調試這個最好的策略是什麼?數據並不重要,但我不希望這種情況再次發生。

我可以看到短的徹底調試Django的安裝,唯一的辦法是在MySQL my.cnf設置爲登錄的一切,通過log設施:

[mysqld] 
log   = /var/log/mysql/queries.log 

然後恢復數據,然後重新啓動MySQL的以便日誌記錄生效,並用Python 2.7.4再次嘗試。數據應該再次消失,但是這次您會看到日誌文件中發出的命令。

用這些命令武裝起來,您可以嘗試查看它們在Django代碼中的位置。

一個完整的消失看起來像是一個模型結構的重新創建,這意味着系統不知道數據在那裏。我不知道有任何Python或Django問題會導致此問題。

你確定你沒有發出刷新/重置命令嗎?

+0

我現在就試試看看我是否仍然有數據丟失。 –

0

我不完全明白你的

今天的意思不小心從我家的電腦我試着使用Python 2.7.3和奇怪的事情發生」啓動Django應用程序

但你可能在不知道它已經運行過的系統上運行syncdb了嗎?syncdb不保留任何數據。

如果你打算進行模式更改,你應該看看使用South進行遷移。

+0

好的。這可能是它。我沒有在數據庫上運行syncdb。但我認爲syncdb只創建了新表,並沒有改變任何現有的表。還是我錯了? –

+0

你是對的,syncdb不應該試圖對它已經創建的模型做任何事情。你提到你從一個不同的環境中運行了一些東西,所以我把它扔到那裏,以某種方式導致syncdb不知道它已經創建了所述模型。在這種情況下,syncdb會覆蓋您在其中的任何數據,因爲它只會刪除並完全重新創建這些表。隨着更多的信息,我們可以進一步挖掘,找出爲什麼。 – noisewaterphd

+0

我正在盡我所能,但數據似乎現在仍然存在。我無法重現這個問題。我用python 2.6,django 1.4重新安裝了我的桌面上的數據庫。並做了一個syncdb。然後在我的筆記本電腦上再次使用python 2.7.3同步數據庫,但沒有任何數據留在那裏。然後我放棄了數據庫,重新創建了它並在桌面上重新填充(不運行syncdb)。相反,我在筆記本電腦上發佈了syncdb。什麼也沒有發生。所以,我仍然不確定那裏發生了什麼。我可以通過什麼方式清空manage.py中的模型表? –