django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
一、现象
最近在数据库中删除了一张表,重新执行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 解决manage.py migrate无效的问题
问题描述: 已有的model,修改之后,想重新建模,于是将migrations文件夹中除__init__.py之外其他文件都删掉,再次执行以下步骤python manage.py makemigrations确认成功,执行python manage.py migrate,提示No migrations to apply. 表示一脸懵逼.再次修改,指定表名,再次尝试,发现问题依旧,表示二脸懵逼 排查过程 python manage.py dbshell 进到数据库里面,查看是否表已存在 结果:表不
-
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
一.现象 最近在数据库中删除了一张表,重新执行python manage.py migrate时出错,提示不存在这张表.通过查找相关的资料,最后找到了相关的解决方法,下面话不多说了,来一起看看详细的介绍吧 二.原因 主要是因为django一般在第一次迁移的时候新建表,后面的都不会新建表,而是只检查字段等等的变化,所以我们既然已经删除了这张表,django检查这张表的字段变化的时候就自然报错了. 三.解决办法 解决办法仍然是执行python manage.py makemigrations和pyt
-
Mysql的Table doesn't exist问题及解决
目录 Mysql Table doesn't exist问题 修改mysql数据库配置 Mysql: "Table 'xx.XXXX' doesn't exist" 尝试解决 lower_case_table_names 参数值 我的解决方式 总结 Mysql Table doesn't exist问题 程序连接Mysql的时候总是提示表不存在,Table 'xx.QRTZ_LOCKS' doesn't exist 查询了下,数据库明明是有这个表的,搞了许久, 网上据说是因为数据库对表
-
django model的update时auto_now不被更新的原因及解决方式
gmt_create自动添加auto_now_add:gmt_modify自动更新auto_now class CommonInfo(models.Model): """基类,提供共同信息,不会创建真实的table""" class Meta: # 声明自己为抽象基类 abstract = True # 下面表示先根据更新时间gmt_modify降序排序,如果更新时间相同,再根据创建时间gmt_create降序排序 ordering = ['-g
-
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
正文 前言:一年前,博主分享过一篇关于bootstrapTable组件冻结列的解决方案 JS组件系列--Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案 ,通过该篇,确实可以实现bootstrapTable的冻结列效果,并且可以兼容ie浏览器.这一年的时间,不断有园友以及群里面的朋友问过我关于固定高度之后,冻结列页面效果不能对齐的问题,奈何博主太忙,一直没有抽空将这个问题优化.最近项目里面也不断有人提过这个bug,这下子不能再推了,必须要直面"惨淡的bug",于
-
Mysql报Table 'mysql.user' doesn't exist问题的解决方法
目录 发现问题 问题起源: 排查记录: 总结 发现问题 前天突然出现了这个问题,花费了很多时间去解决问题.记录一下,希望能给大家避坑 问题起源: 周六,windows本地的mysql还能正常使用,周日早上,使用navicat连接本地mysql,一直报连接拒绝. 排查记录: 1 首先博主,去查看了一下本地Mysql服务是否启动,经过查看发现Mysql服务关闭,且无法启动. 2 因需要先确定Mysql服务无法启动的原因, 所以,去查看了一下系统的日志. 3 确定了问题,是因为Mysql自身报错,信息
-
mysql提示[Warning] Invalid (old?) table or database name问题的解决方法
DROP TABLE IF EXISTS [TEMP_TABLE_NAME]; create temporary table [TEMP_TABLE_NAME] select col1,col2,... from [TABLE_NAME]; alter table [TEMP_TABLE_NAME] add unique idx_col1(col1); 经过以上操作中,多次出现该warning问题.通过查询和跟踪调试源码,有以下线索和处理方式: mysql的"[Warning] Invalid
-
Mysql错误Every derived table must have its own alias解决方法
mysql执行多表查询时报错: [SQL] SELECT * from ( select e.account from employee e UNION SELECT u.account from `user` u UNION SELECT a.account from agent a ) [Err] 1248 - Every derived table must have its own alias 这句话的意思是每个派生出来的表必须有一个自己的别名 一般是在多表查询或者子查询的时候会出现这个
-
解决Django连接db遇到的问题
1.django.db.utils.ConnectionDoesNotExist: The connection default doesn't exist 解决:第一个连接的命名一定要是default,将EN5Test改为default即可 2.django.core.exceptions.ImproperlyConfigured Requested setting DATABASES, but settings are not configured. You must either defi
-
Django User 模块之 AbstractUser 扩展详解
最近在写博客,刚好写到用户注册注销模块,觉得这一方面还是挺有趣的.当尝试掀开 Django 的源代码时一切 API 就不会变得那么摸不着.顺着读Django 的各模块源码,我们可以更灵活地更改代码以实现自己想要的功能. 现在,思考一个问题,主需求是实现博客中用户的注册登录登出功能.如果只满足于用户注册时只登记其邮箱或是用户名,Django 自带的 User 模块既可以实现.但实际上,一个普遍的要求是注册用户应该能够修改自己的头像信息,邮箱信息,昵称信息等其他更灵活的需求. 可以先看一下 Djan
-
django model去掉unique_together报错的解决方案
事情是这样的,我有一个存储考试的表 class Exam(models.Model): category = cached_fields.ForeignKeyField(Category) name = models.CharField(max_length=128) date = models.DateField() created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(au
随机推荐
- Bootstrap fileinput文件上传组件使用详解
- Go项目的目录结构详解
- autoit InputBox 函数
- Python中unittest模块做UT(单元测试)使用实例
- asp中将相对路径转换为绝对路径的函数代码
- Unity UGUI教程之实现滑页效果
- innodb引擎redo文件维护方法
- 后台实时分流文件的shell脚本
- Jquery 整理元素选取、常用方法一览表
- JavaScript中ES6 Babel正确安装过程
- 关于PHP模板Smarty的初级使用方法以及心得分享
- Node.js Stream ondata触发时机与顺序的探索
- PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
- MongoDB释放空闲空间的几种常用方法
- 详解golang RWMutex读写互斥锁源码分析
- python实现的登录与提交表单数据功能示例
- Webpack4+Babel7+ES6兼容IE8的实现
- Vue.js组件通信之自定义事件详解
- 为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
- React Native 图片查看组件的方法