我正在運行syncdb來創建一個sqlite數據庫。它一直工作到最近,我沒有看到任何我已經改變的東西,這會導致它失敗。大部分我只是改變了一些字段名稱。OperationalError:在syncdb上沒有這樣的表
我已在在models.py如下:
class GC_User(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email = models.EmailField()
wp_userID = models.PositiveSmallIntegerField(unique=True)
當我刪除舊的數據庫文件運行後執行syncdb,我得到150線追蹤,最後一部分是:
File "C:\Python33\lib\site-packages\django\db\backends\util.py", line 53, in execute
return self.cursor.execute(sql, params)
File "C:\Python33\lib\site-packages\django\db\backends\sqlite3\base.py", line 450, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.OperationalError: no such table: gameconapp_gc_user
有關可能會導致此問題的任何想法?如果這可能會有幫助,我可以投入更多的追蹤。
謝謝!
更新:多挖後,我的合作伙伴確定問題是應用程序的init.py漸漸調用。由於那裏的例程試圖訪問GC_User表,它沒有這樣的表錯誤。
現在我已經註釋掉了,所以我可以運行syncdb,一旦我們在生產中,我們不會重置數據庫,但它對我來說是違反直覺的,即應用程序在數據庫設置之前被初始化向上。
您可以在'try/except'內初始化您的應用程序,並在數據庫表尚未設置時自動失敗。所以你不需要考慮取消對生產變化的評論 – Thomas