django.db.utils.ProgrammingError: (1146, u"Table'' doesn't exist")解决办法
2017-08-15 13:28
2441 查看
一、现象
在数据库中删除了一张表,重新执行python manage.py migrate时出错,提示不存在这张表。
二、原因
主要是因为django一般在第一次迁移的时候新建表,后面的都不会新建表,而是只检查字段等等的变化,所以我们既然已经删除了这张表,
django检查这张表的字段变化的时候就自然报错了。
三、解决办法
解决办法仍然是执行python manage.py makemigrations和
python manage.py migrate,只不过在执行这个之前,把第一次执行迁移创建表的那个记录删除掉,否则它检测到已经执行过第一次了,那么它后面就不会创建表了。
(1)在该
app模块下,有一个
migrations文件夹,除了前两个文件外,其他的文件都删除,其实每一次如果有变化的话,这边就会生成一个文件,下面这个
001_initial.py看名字就知道是第一次迁移的时候生成的,也就是因为有它的存在,所以以后每次再执行就不再创建表了。
(2)其次,在数据库里面也有相应的记录,也要删除。我们仔细看看数据库里面存的是什么,在
django_migrations里面,这个表里面存的都是每次迁移的记录,当然记录的是什么模块以及对应的文件名字,比如我们这里的模块是
dtheme,这里的文件名叫
001_initial,和我们文件夹里面是一一对应的,同样,删除这条记录。
然后再执行
python manage.py makemigrations和
python manage.py migrate就可以了。需要注意的是,如果这个
app模块下面还有其他的
model的话,那么其他
model创建的
表也要删除掉,相当于我们这样的解决方案是针对整个
app模块的,要执行就会全部重新生成,不然会提示部分表已经存在的错误。
相关文章推荐
- django.db.utils.ProgrammingError: (1146, "Table 'test_b.products_category' doesn't exist")
- django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
- django操作mysql时django.db.utils.OperationalError: (2003, "Can't connect to MySQL server")错误的解决办法
- django.db.utils.OperationalError: (1049, "Unknown database "test_django_mysql")的解决办法
- django.db.utils.OperationalError: (1050, "Table 'article_category' already exists") 数据库同步时错误解决方法
- django.db.utils.OperationalError: (1050, "Table 'devtypeinfo' already exists
- Django错误(1146,Table 'operation.django_session' doesn't exist")
- Django错误(1146,Table 'operation.django_session' doesn't exist")
- centos7解决django.db.utils.OperationalError: FATAL: Peer authentication failed for user "postgres"
- Django错误(1146,Table 'operation.django_session' doesn't exist")
- Django错误(1146,Table 'operation.django_session' doesn't exist")
- Caught an exception while rendering: (1146, "Table 'django.django_admin_log' doesn't exist")
- django.db.utils.OperationalError: (1050, "Table 'devtypeinfo' already exists
- mysql解决出现[Err] 1146 - Table 'performance_schema.session_status' doesn't exist的解决办法
- Django错误(1146,Table 'operation.django_session' doesn't exist")
- MySQL之——提示表不存在的解决方法error: 1146: Table doesn't exist
- Django错误(1146,Table 'operation.django_session' doesn't exist")
- 解决django.db.utils.DataError: (1406, "Data too long for column 'gender' at row 1")
- django使用session报错 (1146, "Table 'test3.django_session' doesn't exist")
- Django错误(1146,Table 'operation.django_session' doesn't exist")