Django:表不存在

2024-05-16 09:38:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我掉了一些与应用程序相关的表。然后再次尝试syncdb命令

python manage.py syncdb

它显示出错误

django.db.utils.ProgrammingError: (1146, "Table 'someapp.feed' doesn't exist")

模型.py

class feed(models.Model):
    user = models.ForeignKey(User,null=True,blank=True)
    feed_text = models.CharField(max_length=2000)
    date = models.CharField(max_length=30)
    upvote = models.IntegerField(default=0)
    downvote = models.IntegerField(default=0)

    def __str__(self):
        return feed.content

我能做些什么来得到那个应用程序的表?


Tags: djangopy命令true应用程序defaultmanagemodels
3条回答

以上的解决方案对我都不起作用,我最终通过

sudo systemctl stop mysql.service

sudo apt-get purge mysql-server

sudo apt-get install mysql-server

sudo systemctl stop mysql.service

在我的例子中,我提取的代码有managed = False,我希望Django维护表。

但是,当我进行迁移时,没有检测到自定义表,或者我得到了一个错误,即app\u name.Table\u name不存在

我尝试了以下方法:

  1. 删除migrations文件夹中的所有迁移文件(init.py文件除外),然后进行迁移,最后进行迁移
  2. 以上2个答案
  3. this

PS:此解决方案仅在存在备份或数据不重要或您刚开始创建表时才可行,因为清除mysql将导致数据丢失

  1. 放下桌子(你已经这么做了)
  2. 在model.py中注释掉模型
  3. 还有。。

如果django version>;=1.7:

python manage.py makemigrations
python manage.py migrate --fake

其他

python manage.py schemamigration someapp --auto
python manage.py migrate someapp --fake
  1. 在models.py中对模型进行注释
  2. 转到步骤3。但这次没有--假的

对于那些可能仍然有麻烦的人(比如我),试试这个:

注释掉主应用程序中的所有URL urls.py

然后继续运行迁移:

$ ./manage.py makemigrations
$ ./manage.py migrate

通过移除()

    solved_time = models.DateTimeField('solved time', default=timezone.now())

    solved_time = models.DateTimeField('solved time', default=timezone.now)

I got this answer from reddit

相关问题 更多 >