解决Django migrate No changes detected 不能创建表的问题
起因
修改了表结构以后执行python3 manage.py migrate 报错:
django.db.utils.OperationalError: (1091, "Can't DROP 'email'; check that column/key exists")
所以进数据库把对应的表删除了,想着重新生成这张表.
删除表以后执行:
python3 manage.py makemigrations python3 manage.py migrate
还是不能生成表,提示:No changes detected
处理过程
首先删除了app对应目录下的数据库对应的文件和缓存文件:
$ rm -rf migrations/ __pycache__/
重新执行:
$ python3 manage.py makemigrations No changes detected $~/code/django/blogproject$ python3 manage.py makemigrations comments Migrations for 'comments': comments/migrations/0001_initial.py - Create model Comment $~/code/django/blogproject$ python3 manage.py migrate Operations to perform: Apply all migrations: admin, auth, blog, comments, contenttypes, sessions, users Running migrations: No migrations to apply.
进入数据库发现仍然没有生成表.
然后发现有一张django_migrations表,里面记录这有关创建表的记录,删除对应的数据表:
delete from django_migrations where app='yourappname';
重新执行生成数据库命令:
$ python3 manage.py makemigrations comments No changes detected in app 'comments' $~/code/django/blogproject$ python3 manage.py migrate comments Operations to perform: Apply all migrations: comments Running migrations: Applying comments.0001_initial... OK
数据表顺利生成.
结论
在执行
python3 manage.py makemigrations python3 manage.py migrate
操作的时候,不仅会创建0001_initial.py对应的模型脚本,还会创建一个数据库记录创建的模型.如果想重新生成数据库,需要两个地方都做删除.
以上这篇解决Django migrate No changes detected 不能创建表的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Django之创建引擎索引报错及解决详解
学习Django框架时,创建一个引擎及索引时报错,具体报错如下: 执行命令: python3 manage.py rebuild_index 报如下错误: ......(前面一堆报错) File "/home/python/Django/test6/test6/urls.py", line 20, in <module> url(r'^admin/', include(admin.site.urls)), File "/home/python/.virtualen
-
django 多对多表的创建和插入代码实现
这篇文章主要介绍了django-多对多表的创建和插入代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 表的创建 # 作者和书籍之间的多对多关系 class Author(models.Model): ''' 作者表 ''' nid = models.AutoField(primary_key=True) name = models.CharField(verbose_name='作者名称',max_length=32) # 第一种方式直接
-
Django框架创建mysql连接与使用示例
本文实例讲述了Django框架创建mysql连接与使用.分享给大家供大家参考,具体如下: 对于Django新手,你刚开始可以不使用MySQL数据库,但一定要学会如何配置使用MySQL.Django项目中配置使用MySQL一共分四步: 安装MySQL, 创建数据库名和用户名,通过pip安装第三方库pymysql和修改配置文件settings.py. 第一步 安装MySQL Windows用户可以直接从MySQL网站上下载相应版本安装.Linux用户可以使用如下命令安装mysql-server. s
-
Django如何自定义model创建数据库索引的顺序
首先这是一个先有鸡还是先有蛋的问题,大部分时候数据都来自excel的整理,当数据越来越多,需要分析的点也越来越多的时候,通过excel来管理显然有些吃力了. 这时候就需要将excel导入到数据库中,然而model创建的索引并非是我们编写时候的顺序,特别是当存在 models.ForeignKey 时,我们必须要先创建 ForeignKey的class,最后再创建总表. 为了保证数据库的索引跟excel的索引一致,我们需要对model中的索引字段做一系列的处理(可能这是一个野路子). 首先当然是先
-
python使用Pycharm创建一个Django项目
本文为Django项目创建的简单介绍,更为详细的Django项目创建,可以参考如下教程: Django入门与实践-//www.jb51.net/article/64109.htm Pycharm 版本: Professional 2017.1 Django 版本: 1.8.7 在软件安装和环境配置完成后,打开Pycharm. Step 1. 点击 File --> New Project 弹出如下窗口: 图中编号1处为项目位置:编号2处为使用的模板语言类型,默认为Django模板语言:编号3处是
-
django创建超级用户过程解析
这篇文章主要介绍了django创建超级用户过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 终端输入 python3 manage.py createsuperuser 按照提示进行操作即可 不输入用户名会给你默认一个用户名,输入密码是在原处不动的,其实已经在输入了. 创建超级用户是为了能够登陆admin账户给数据库中添加数据. 需要添加数据的表格要放在admin里 from django.contrib import admin # R
-
Python Django Vue 项目创建过程详解
1.创建项目 打开pycharm 终端,输入如下,创建项目 # 进入pycharm 项目目录下 cd pyWeb django-admin startproject pyweb_dome # pyweb_dome 是django项目名称 2.创建应用 # 进入项目根目录 pyweb_dome 下 cd pyweb_dome python manage.py startapp webserver # webserver 为应用名 3.创建前端项目 使用vue-cli在根目录创建一个名称叫[fron
-
django项目环境搭建及在虚拟机本地创建django项目的教程
1.Python虚拟环境创建 首先我们为什么要创建虚拟环境呢?因为不同的项目所依赖的环境不一样,他们需要不同的第三方库等等.为了避免冲突,所以我们要创建虚拟环境,在次此我用的的Linux ubuntu和pycharm. 在虚拟机上创建Python虚拟环境命令为: mkvirtualenv -p /usr/bin/python3 虚拟环境名字 (-p参数选择虚拟环境要用的Python解释器) 2.创建django项目 第一步:进入到你要创建项目的目录 cd ~/project 第二步:安装djan
-
解决Django migrate No changes detected 不能创建表的问题
起因 修改了表结构以后执行python3 manage.py migrate 报错: django.db.utils.OperationalError: (1091, "Can't DROP 'email'; check that column/key exists") 所以进数据库把对应的表删除了,想着重新生成这张表. 删除表以后执行: python3 manage.py makemigrations python3 manage.py migrate 还是不能生成表,提示:No c
-
解决Django migrate不能发现app.models的表问题
有时候运行Django的migrate命令不能创建INSTALLED_APPS中的app中的models.py的数据库表, 这时可以先运行: python manage.py makemigrations [appname] 这里的appname是指你需要指定django检查的app name, 运行该命令后, 即可生成迁移文件, 最后运行: python manage.py migrate 以上一般可以解决问题, 如果还是有创建表格不全等问题的话, 可以将migrations文件, 数据库表,
-
解决django同步数据库的时候app models表没有成功创建的问题
问题描述: 在django中创建了一个app,而且在app中自定义创建了几个数据表,在同步的时候系统自带的表可以成功,但是models中的没有生效,而且进入对应app下的migrations目录,发现为空,应该如何解决呢! 解决方式: python3 manage.py makemigrations --empty managerbook # managerbook就是你的app名字,此处要写成自己的app名字 python3 manage.py makemigrations # 再次正常
-
解决django migrate报错ORA-02000: missing ALWAYS keyword
错误信息 PS D:\parttime\python\django\guanxiangzhiji> python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: Traceback (most recent call last): File "D:\app\anaconda\lib\site-packa
-
django搭建项目配置环境和创建表过程详解
1. 搭建项目配置环境和创建表 创建一个ttsx的项目 django-admin startproject ttsx 在ttsx下的__init__中导入mysql import pymysql pymysql.install_as_MySQLdb() 配置mysql 读写分离配置 # default:默认的配置的是主数据库 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': 'localhost', 'PORT': 3306,
-
解决Django数据库makemigrations有变化但是migrate时未变动问题
写models.py时缺少了一个 verbose_name,导致数据库出现问题,整了很久,摸索出重新建立数据库的方法: 首先删除每个app中的migrations中的除了init.py的文件,在数据库中清空所有的表,然后执行migrate,这时会自动生成系统默认的那些表,然后执行makemigrations,再执行migrate 如果只是众多应用中的一个出了问题的话,删除与之相关的表,然后进入django_migrations表中,将相应的app那项记录删除,然后再执行 makemigratio
-
解决Django no such table: django_session的问题
操作系统:Win7 IDE:PyCharm4.5.3 Django:1.10.1 报错代码:request.session['key'] = value 描述:今天第一次使用Django中的session,只要出现"session['key']"就会报错. 解决方法: 1. 进入cmd,通过cd命令进入到项目根目录下,即manage.py文件所在的文件夹. 2. 看一下Django的版本号(我的是1.10.1), 1.9之后的执行'python manage.py migrate'命令
-
解决django 向mysql中写入中文字符出错的问题
之前使用django+mysql建立的一个站点,发现向数据库中写入中文字符时总会报错,尝试了修改settings文件和更改数据表的字符集后仍不起作用.最后发现,在更改mysql的字符集后,需要重建数据库,才能起作用. 这里完整记录一下解决方案 首先更改mysql的字符集 ubuntu下找到/etc/mysql/my.cnf 在最后添加 [mysqld] character-set-server=utf8 [client] default-character-set=utf8 [mysql]
-
Django migrate报错的解决方案
前言 在讲解如何解决migrate报错原因前,我们先要了解migrate做了什么事情,migrate:将新生成的迁移脚本.映射到数据库中.创建新的表或者修改表的结构. 问题1:migrate怎么判断哪些迁移脚本需要执行? 它会将代码中的迁移脚本和数据库中django_migrations中的迁移脚本进行对比,如果发现数据库中,没有这个迁移脚本,那么就会执行这个迁移脚本. 问题2:migrate做了什么事情 将相关的迁移脚本翻译成SQL语句,在数据库中执行这个SQL语句. 如果这个SQL语句执行没
-
解决Django删除migrations文件夹中的文件后出现的异常问题
migrate文件记录了每一次数据迁移的改变 解决方法:重建数据库 1.删除数据库 错误方法: python manage.py shell from app.models import *Product.objects.raw('drop database') 上面删除数据库的方法是错误的 正确方法: 如果是用默认的sqlite数据库:可以直接右键,将db.sqlite3删掉. 如果用的其他数据库,则进入数据库的控制台,将数据库删掉 2.删除migrations中的文件,只保留__init__
随机推荐
- Linux网络启动问题:Device does not seem to be present解决办法
- Vue.js双向绑定实现原理详解
- java几种排序算法的实现及简单分析
- iOS中的集合该如何弱引用对象示例详解
- MVC+EasyUI+三层新闻网站建立 详情页面制作方法(八)
- 解析asp.net的分页控件
- 使用JavaScript实现连续滚动字幕效果的方法
- JS开发中基本数据类型具体有哪几种
- php函数实现判断是否移动端访问
- Android控件之Spinner用法实例分析
- Python接收Gmail新邮件并发送到gtalk的方法
- 硬盘的真正凶手手工解决篇
- sql分页查询几种写法
- 分页技术原理与实现之分页的意义及方法(一)
- 使用jQuery实现的网页版的个人简历(可换肤)
- 在IE中调用javascript打开Excel的代码(downmoon原作)
- 从后台到webshell的一点思路
- 浅谈java的TCP和UDP编程(附实例讲解)
- ASP.NET中使用Ajax的方法
- Android实现图片压缩示例代码