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

django数据库错误相关问题

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

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.pySelect 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 = Directionsinlines = [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

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

ref:[Django 问题收集]

django数据库错误相关问题相关推荐

  1. django数据库错误django. db. utils. OperationalError: ( 1044,‘Access denied for user’ erqueque’@' %’to‘dj’

    数据库配置的两种方法 第一种,在settings内直接配置,缺点就是如果上传到GitHub或码云会把数据库给暴露出来 DATABASES = { 'default': { 'ENGINE': 'dja ...

  2. Django数据库报错相关问题总结(初始化、迁移等)

    整理学习Django过程中遇到的问题 如何新建用户 新建超级用户 python manage.py createsuperuser 在命令行中依次输入用户名.邮箱地址(选填,可为空).密码.二次确认密 ...

  3. django数据库事务

    数据库原子操作 举个例子: 一个消费者在一个商户里刷信用卡消费,交易正常时,银行在消费者的账户里减去相应的款项,在商户的帐户加上相应的款项.但是如果银行从消费者的账户里扣完钱之后,还未在商户的帐户里加 ...

  4. mysql 中修改对象_在MySQL中,创建一个数据库后,还可以对象其进行修改,不过这里的修改是指可以修改被创建数据库的相关参数,也可以修改数据库名。...

    [多选题]注射时,在(  )情况下,采用较高的注射速率. [单选题]通常,所设置的模具温度是指和制品接触的模腔内表面在(   ). [单选题]反映某一事件发生强度的指标应选用 [判断题]当试样制备之后 ...

  5. 【转】Django 数据库的操作

    2019独角兽企业重金招聘Python工程师标准>>> Django 紧紧地遵循这种 MVC 模式,可以称得上是一种 MVC 框架.以下是 Django 中 M.V 和 C 各自的含 ...

  6. oracle网络加载错误怎么解决,Oracle加载数据库错误解决的方法详细教程

    今天小编给大家分享一篇关于Oracle加载数据库错误解决的方法详细教程,感兴趣的朋友跟小编一起来了解一下吧! 注意:安装时要保证Oracle安装目录不能带有中文字符 (如果第一次安装出现"加 ...

  7. Django-- (三) Django数据库操作

    1.Django数据库 Django 非常适合构建数据库驱动型网站,它提供了简单而强大的工具(ORM),易于使用 Python 执行数据库查询. 2.ORM介绍 Object Relational M ...

  8. Microsoft SQL Server 数据库 错误号大全

    panchzh :Microsoft SQL Server 数据库 错误号大全 0 操作成功完成. 1 功能错误. 2 系统找不到指定的文件. 3 系统找不到指定的路径. 4 系统无法打开文件. 5 ...

  9. django数据库迁移需注意的问题

    django迁移 django迁移就是在django的models.py中创建数据库表,有django自己规定的数据库操作语法. 直接使用SQL非常麻烦,Django附带了一个对象关系映射器,简称OR ...

  10. 达梦数据库登录提示网络通信异常_DM达梦数据库-错误号: 6001 错误消息: 网络通信异常,服务启功失败...

    DM达梦数据库-错误号:   6001  错误消息: 网络通信异常,服务启功失败 今天遇到一个大问题,在使用达梦数据库的时候发现达梦的数据库不能用了, 非常郁闷,昨天晚上关机的时候也没有出现什么问题啊 ...

最新文章

  1. 怎么注册今日头条?哪里可以直接购置?
  2. 机会:新兴产业+大消费(转载)
  3. DCMTK:I2DBmpSource类的测试程序
  4. Web服务(Apache、Nginx、Tomcat、Jetty)与应用(LAMP、CMS-WordPressGhost、Jenkins、Gitlab)
  5. SAP Spartacus category在breadcrumb里显示不正确的一个问题
  6. .NET 项目中的单元测试
  7. 深度CTR预估模型中的特征自动组合机制演化简史
  8. arraylist扩容是创建新数组吗 java_Java编程之数组扩容
  9. Python快速安装库的靠谱办法
  10. golang切片转为字符串,字符串转切片
  11. Python返回多个值
  12. 【交易技术前沿】新一代证券交易系统应用架构的研究
  13. C语言中判断素数的几种方法
  14. idea验证失败_解决iPad登陆不了Apple ID验证失败的问题
  15. 使用rpc(thrift或protobuf)进行前后端交互的若干种方式
  16. 常用运行命令win10
  17. 判断模式分解是否为无损连接的方法
  18. c语言编程if,关于C语言中#if的用法
  19. 第一讲:高性能计算基础知识讲解
  20. 你知道吗:Android为何比iOS和WP慢?

热门文章

  1. 洛谷 P2341 [HAOI2006]受欢迎的牛 解题报告
  2. 51nod 1378 夹克老爷的愤怒(树型dp+贪心)
  3. lintcode_189. 丢失的第一个正整数
  4. JavaScript ECMAScript版本介绍
  5. rownum的用法oracle
  6. Linux 中安装软件报缺少共享库文件的错误
  7. spring+ibatis+注解开发
  8. 「知识蒸馏」最新2022研究综述
  9. Transformer的中年危机
  10. 【AAAI2021】NLP所有方向论文列表(情感分析、句法、NER、对话/问答、关系抽取、KD等)...