我正在运行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