django - 操作错误:初始同步数据库上没有这样的表

标签 django sqlite syncdb operationalerror

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

相关文章:

python - Django 1.1 FormWizard,动态扩展表单

Python:转换字典中的元组列表

java - 在 Java (Android) 中创建内存中的 sqlite 数据库的示例?

c++ - SQLite3 C++ 列值不会递增 1

android - 为未知添加默认值

python - 更改模型以从抽象基类继承而不更改数据库

django - 使用 pycharm 调试器调试在 docker 镜像中运行的 django 应用程序

python - 使用非 ascii verbose_name 的 Django 模型时 manage.py syncdb 错误

python - 同步数据库时我应该使用什么密码?

python - Django 1.6.5 中不存在该列