问题:字段修改属性发生错误

1>

>python manage.py makemigrations
You are trying to add a non-nullable field 'price_monthly' to product without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py
Select an option:

{这个可能是之前已创建了表中的一条记录,之后模型中增加了一个非空的字段,但是原来已经存在的记录没有这个值}

2>

>python manage.py migrate
... ...
raise errorclass(errno, errorvalue)django.db.utils.ProgrammingError: (1146, "Table 'lab_data.bigdata_postgraduate_research_directions' doesn't exist")

{这个是因为在字段中添加了blank=True或者 null=True引起的}

3>

>python manage.py makemigrations
You are trying to change the nullable field 'job_title' on professor to non-nullable without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows)
 2) Ignore for now, and let me handle existing rows with NULL myself (e.g. adding a RunPython or RunSQL operation in the new migration file before the AlterField operation)
 3) Quit, and let me add a default in models.py
Select an option:

{这个是将模型中的null=True删除了之后产生的错误}

1>原因解释:

1. The migrations system is designed so that a single migration can be applied to more than one database. For example, you could have a development version, a staging version, and one or more production versions. That's whymaking the migration is a distinct step from applying the migration, and whymakemgirations can't just look at the currently active database to see that it doesn't have any rows. What if you then try to apply the migration to a database that does?

The solution in your case is simple: since there are no rows, option 1 (setting a default on all existing rows) won't do anything at all. So choose option 1, and any value you like.

[Django 1.7.1 requires a Default value for field - but no entry is in database. Why?]

2. Django adds a default "id" field to every model, you don't need an extra "twitbot_id" in your model. If a surrogate primary key is all you need, forget about "twitbot_id" because it will be a duplicate of the auto-generated "id". Seehttps://docs.djangoproject.com/en/dev/topics/db/models/#automatic-primary-key-fields

If you add this and you already have TwitterBot objects in your database you must provide a default value to populate this column for existing rows in the database.

[Can't seem to lose this error: “You are trying to add a non-nullable field”]

3. 如果你跟我一样是因为之前建好表a后,又创建一个表b作为a的父类,a中只有pass,那么因为表a已经创建,其中有数据,当a迁移时就会出现新表不能为null且没有指定默认值时就会出现这种错误。

解决方案:

1>在基类b中添加允许为空或者添加默认值,并设置b不建表(meta中的abstract = true)

class Base(models.Model):
'''
基类
'''
title = models.CharField(max_length=150, null=True)
content = models.TextField(null=True)
time_stamp = models.DateTimeField(auto_now_add=True, default=timezone.now())
link = models.URLField(blank=True, verbose_name='url_link') class Meta:
abstract = True

Note:DataTimeField好像与其它的不一样,不好改!

1>2>3>

删除所有migrate文件(不用移除整个文件夹),然后重来

问题:manytomanyfeild没有默认值

django admin gives warning “Field 'X' doesn't have a default value”

问题:添加元属性发生错误

raise InternalError(errno, errorvalue)
django.db.utils.InternalError: (1017, "Can't find file: '.\\lab_data\\people_patent_prizes.frm' (errno: 2 -No such file or directory)")

{模型类中增加class Meta:db_table='People'使数据库中对应的表名修改成了People,原来的表间联系可能破坏了}
解决方案:

删除所有migrate文件(不用移除整个文件夹),然后重来

http://blog.csdn.net/pipisorry/article/details/45727309

问题:表中字段不存在

"Unknown column 'name' in 'field list'"

django中创建了表professor继承了表people的字段,并且在后台可以看到,但实际在数据库中不存在(数据库中查询可看到)

出现问题原因:

1. model中编辑的字段没有在数据库对应的表里创建(原因可能是字段是继承自父类,出现的什么问题?)

数据库中查看表中的字段:

2. migration文件出了什么问题?导致没有同步到数据库(表都没创建)

解决方案1:

在数据库中手动添加没有创建的字段

alter table bigdata_professor add column name varchar(6);

再次查看表中字段:

再次运行django服务器,后台添加name字段时就不会出错了。

解决方案2:

先删除整个migrations文件夹,再Python manage.py makemigrations,再python manage.py migrate


这样表就可以重新建立成功了!(可以查询到django中新建的表bigdata_professor....)


Note:

1. 成功后最好把之前删除的文件夹migrations重新建一个(app中的)

2. 只删除migration文件可能不会出现这个问题:

No migrations to apply.   Your models have changes that are not yet reflected in a migration, and so won't be applied. Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.

我了个去,都不知道为啥migration文件会出问题,删除后再操作就没事了,可能是(在makemigrations)之前先进行了migrate操作?

[Django Models (1054, “Unknown column in 'field list'”)]

问题:表不存在或者No migrations to apply

 "Table 'lab_data.bigdata_resdir' doesn't exist"

模型中建立新表后,makemigrations成功,但是migrate出现错误:

python manage.py migrate
Operations to ...:
Apply all migrations: ...
No migrations to apply.(即使实际上明明makemigrations成功,并且有许多migrations可以应用)
  Your models have changes that are not yet reflected in a migration, and so won't be applied.  Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.

按照提示重新makemigration后migration文件就不会创建新表了,在数据库中表也的确没有新建。

原因:

1. Sounds like your initial migration was faked because the table already existed (probably with an outdated schema):

https://docs.djangoproject.com/en/1.7/topics/migrations/#adding-migrations-to-apps

"This will make a new initial migration for your app. Now, when you run migrate,Django will detect that you have an initial migration and that the tables it wants to create already exist, and will mark the migration as already applied."

Otherwise you would get an no-such-table error.

[No migrations to apply, even though there are migrations to apply]

2. 也可能是之前按照某个说明执行了一次python manage.py migrate --fake导致的。--fake 的含义是不执行该迁移脚本但是标记该脚本已经被执行过。导致之后无法正常进行迁移。

[Django 1.7 中 migrate 无法执行而且表不存在的解决方案]

解决方案:

方法1.

1> In MySQL Database delete row 'app_name' from the table 'django_migrations'.

打开mysql command line client, 进入创建好的数据库use databasename; 查看表select * from django_migration; 发现将要执行的迁移脚本的 id 已经添加在表中了,将其删除即可,即删除最新一次app_name对就的id行。

2> Delete all migration files in migrations folder.

3> Try again python manage.py makemigrations and python manage.py migrate command.

[Django 1.7 - “No migrations to apply” when run migrate after makemigrations]

 

方法2:

移除整个migrations文件夹,重新makemigrations和migrate。之后就会自动创建了:

方法3:

实在不行,只能drop database,再重新建立了。

http://blog.csdn.net/pipisorry/article/details/45727309

问题:外键修改成多对多错误

ValueError: Cannot alter field bigdata.Postgraduate.publisher into bigdata.Postgraduate.publisher - they are not compatible types (you cannot alter to or from M2M fields
, or add or remove through= on M2M fields)

{这个错误是由将模型Postgraduate中的publisher字段从ForeignKey修改成ManyToManyField引起的}

解决方案:

删除所有migrations文件,重新makemigrations和migrate

[foreignkey error: Django migration error :you cannot alter to or from M2M fields, or add or remove through= on M2M fields]

数据库注册到site管理错误

TypeError: __init__() missing 2 required positional arguments : 'model' and 'admin_site'

class DirectionsInline(inlineBase, admin.ModelAdmin):
model = Directions
inlines = [ImagesInline, ]
admin.site.register(Directions, DirectionsInline)

解决:原因可能是继承admin.ModelAdmin的类中不能有model = ***

数据库权限错误

django.db.utils.operationalerror:<1045,"access denied for user root@localhost using password yes>

解决方案1:django setting.py文件中设置的database用户名或者密码错了,修改一下就可以了

或者是django运行项目时用的不是settings.py文件,这个在os.environ.setdefault("DJANGO_SETTINGS_MODULE", "labsite.settings")中设置

其它方案

Access denied for user 'root'@'localhost' (using password: YES)

mysql Access denied for user root@localhost错误解决方法总结(转)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

MySQL Forums ::Install & Repo ::ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

django.db.utils.operationalerror:<2003, "can't connect to mysql server on '127.0.0.1'(winerror 10061] No connection could be made because the target machine actively refused it)")

settings.py中设置的host和port如下

'HOST': '127.0.0.1','PORT': '3306'

如改动port为其它,可能导致该问题

其它问题:

1.Error: Tablespace for table xxx exists. Please DISCARD the tablespace before IMPORT

2. django.db.utils.ProgrammingError: (1146, "Table 'lab_data.django_migrations' doesn't exist")

3.django.db.utils.InternalError: (1050, "Table '`l ab_data`.`django_migrations`'already exists")

1>两个模型的数据库表名设置成一样的了

class Meta:
db_table = 'WorkExp1'

2>python manage.py migrate --fake

本文转自:http://blog.csdn.net/pipisorry/article/details/45727309

Django中数据库操作相关的错误的更多相关文章

  1. django中数据库操作——in操作符

    django一对多关系中,为了实现按照一端查询多端,之前都是用extra操作符,经过查看官方文档还有in这个操作符,用这个实现更简单.直接上代码: 根据查询条件模糊查询所有符合条件的机架列表,然后根据 ...

  2. django中数据库操作有关部分

    # >>>>>>>>>>>>>>>>>>>>>>>>&g ...

  3. django中数据库的相关操作

    一.使用环境 python2.7,django>1.7 二.数据库进行配置 在setting文件中进行修改 1.找到DATABASES DATABASES = { 'default': { 'E ...

  4. Access 中数据库操作时提示from子句语法错误

    问题:如果在Access 中数据库操作时提示from子句语法错误原因:语句中某一单词为Access中的关键字.如:select * from user.其中user就是一关键字.解决:用中括号[]将其 ...

  5. django models 数据库操作

    django models 数据库操作 创建模型 实例代码如下 from django.db import models class School(models.Model): pass class ...

  6. Django 2.0 学习(16):Django ORM 数据库操作(下)

    Django ORM数据库操作(下) 一.增加表记录 对于表单有两种方式: # 方式一:实例化对象就是一条表记录france_obj = models.Student(name="海地&qu ...

  7. Django 2.0 学习(14):Django ORM 数据库操作(上)

    Django ORM 数据库操作(上) ORM介绍 映射关系: 数据库表名 ---------->类名:数据库字段 ---------->类属性:数据库表一行数据 ----------&g ...

  8. Django与数据库操作

    Django与数据库操作 数据库连接的方法 web 框架 django --- 自己内部实现 (ORM) + pymysql(连接) Flask,tornado --- pymysql SQLArch ...

  9. Django中的ORM相关操作:F查询,Q查询,事物,ORM执行原生SQL

    一    F查询与Q查询: 1 . F查询: 在上面所有的例子中,我们构造的过滤器都只是将字段值与某个常量做比较.如果我们要对两个字段的值做比较,那该怎么做呢? Django 提供 F() 来做这样的 ...

随机推荐

  1. (十三)Docker容器进入的4种方式

    简介 在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法. 进入Docker容器比较常见 ...

  2. MinIO分布式集群的扩展方案及实现

    目录 一.命令行方式扩展 1. MinIO扩展集群支持的命令语法 2. 扩容示例 二.etcd扩展方案 1. 环境变量 2. 运行多个集群 3. 示例 相关链接 MinIO 支持两种扩展方式: 通过修 ...

  3. HUAWEI AppGallery Connect获得SOC国际权威认证,多举措保护信息和隐私安全

    近日,华为应用市场AppGallery Connect(简称AGC)一次性成功通过国际权威标准组织"美国注册会计师协会(AICPA)"认定的SOC1 Type2.SOC2 Type ...

  4. 【pytest官方文档】解读fixtures - 10. fixture有效性、跨文件共享fixtures

    一.fixture有效性 fixture有效性,说白了就是fixture函数只有在它定义的使用范围内,才可以被请求到.比如,在类里面定义了一个fixture, 那么就只能是这个类中的测试函数才可以请求 ...

  5. Jenkins 自动触发执行的配置

    1. 两种触发方式 2. jenkins 和 github 同步配置 ngrok 安装 webhook 配置 1. 两种触发条件 Jenkins 中建立的任务是可以设置自动触发,更进一步的实现自动化. ...

  6. kubectl简介

    kubectl简介 kubectl是操作k8s集群的命令行工具,安装在k8s的master节点,kubectl在$HOME/.kube目录中查找一个名为config的文件, 你可以通过设置Kubeco ...

  7. 【cypress】6. cypress的默认文件结构介绍

    通过之前的一些介绍,已经大概其明白cypress是个啥,但是具体使用的细节点还有很多,需要一步步的去学习. 在安装好cypress之后,会生成一个默认项目,这个项目结构里的各个文件夹是干嘛使的呢? 一 ...

  8. FCKeditor编辑器漏洞

    目录 FCKeditor asp网页 aspx网页 php网页 jsp网页 FCKeditor FCKeditor是一个功能强大支持所见即所得功能的文本编辑器,可以为用户提供微软office软件一样的 ...

  9. Win64 驱动内核编程-7.内核里操作进程

    在内核里操作进程 在内核里操作进程,相信是很多对 WINDOWS 内核编程感兴趣的朋友第一个学习的知识点.但在这里,我要让大家失望了,在内核里操作进程没什么特别的,就标准方法而言,还是调用那几个和进程 ...

  10. Windows核心编程 第六章 线程基础知识 (下)

    6.6 线程的一些性质 到现在为止,讲述了如何实现线程函数和如何让系统创建线程以便执行该函数.本节将要介绍系统如何使这些操作获得成功. 图6 - 1显示了系统在创建线程和对线程进行初始化时必须做些什么 ...