我正在运行syncdb来创建一个sqlite数据库。直到最近它一直在工作,我没有看到我所做的任何更改会导致它失败。大多数情况下,我只是更改了一些字段名称。
我在 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 表,因此出现了 no such table 错误。
现在我已经将其注释掉了,这样我就可以运行syncdb,一旦我们投入生产,我们就不会重置数据库,但对我来说,在设置数据库之前初始化应用程序是违反直觉的.
最佳答案
我在使用本地 SQLite 3 数据库时遇到了这个问题。首先,我删除了该文件以确保。
为了解决此问题,我使用了 syncdb --no-initial-data
,然后继续对提到的每个未同步的应用程序使用 migrate
:
./manage.py syncdb --no-initial-data
./manage.py migrate app1
./manage.py migrate app2
./manage.py migrate app3
没有保证订单,因此必须手动完成,然后检查哪个订单适合您。就我而言,必须先完成 simple_email_confirmation
应用程序,然后再进行其他操作。经过几次尝试后,./manage.py migrate
本身应该可以工作。
关于django - 操作错误:初始同步数据库上没有这样的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21036336/