django报1050, "Table 'django_content_type' already exists"

分析:这个报错的原因是,已经做过migration了,但django_migrations中并没有记录! 导出数据库时,这张表居然为空,导不出来,于是就有了这


个问题。
解决:手动创建django_migrations表的记录,哪些有做过migration的,这张表就添加记录。
网上有人用python manage.py migrate --fake-initial来解决,但我看不行!


不知道从什么时候开始,我一修改django的数据库model,做python manage.py migrate时,就会报这个错!
让我无比苦恼!
django.db.utils.InternalError: (1054, "Unknown column 'name' in 'django_content_
type'")


实际上,在django中,有两张表极为重要:django_content_type,这个地方定义了django工程认可的app。这些app都是要进行migrate的对象。
还有一张表:django_migrations表,记录了django迁移的过程。
如下:
1 contenttypes 0001_initial 2017-12-19 17:53:03.261606
2 auth 0001_initial 2017-12-19 17:53:03.346684
3 admin 0001_initial 2017-12-19 17:53:03.373091
4 admin 0002_logentry_remove_auto_add 2017-12-19 17:53:03.384603
5 contenttypes 0002_remove_content_type_name 2017-12-19 17:53:03.414765
6 auth 0002_alter_permission_name_max_length 2017-12-19 17:53:03.424757
7 auth 0003_alter_user_email_max_length 2017-12-19 17:53:03.437770
8 auth 0004_alter_user_username_opts 2017-12-19 17:53:03.446892
9 auth 0005_alter_user_last_login_null 2017-12-19 17:53:03.461476
10 auth 0006_require_contenttypes_0002 2017-12-19 17:53:03.464332
11 auth 0007_alter_validators_add_error_messages 2017-12-19 17:53:03.473438
12 auth 0008_alter_user_username_max_length 2017-12-19 17:53:03.488165
13 call_center 0001_initial 2017-12-19 17:53:03.572816
14 cmm 0001_initial 2017-12-19 17:53:04.667065
15 sessions 0001_initial 2017-12-19 17:53:04.680216
16 call_center 0001_initial 2017-12-27 10:22:29.592507
17 call_center 0002_work_order_affiliated_customer 2017-12-27 10:22:31.255602
表中记录的这些迁移文件即使被删除了也无所谓。
我找到原来的表,手动copy过去(可以用ctrl+c 和ctrl+v)。这样django_migrations表就正确了。
以后做python manage.py makemigrations; python manage.py migrate都是可以的了!好开心!
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
### 回答1: 这个错误信息 "table 'django_content_type' already exists" 在使用Django时可能会出现。它表示数据库中已经存在名为 'django_content_type' 的表。 出现这个错误的原因可能有以下几种情况: 1. 数据库已经存在该表:可能是此前已经执行过创建表的操作,但又重复执行了一次,导致数据库中已经存在了该表。 解决方法: 可以手动删除该表,然后再重新执行创建数据库表的操作。 2. 数据库迁移文件冲突:可能是在进行数据迁移时,之前的迁移文件与当前需要执行的迁移文件有冲突,导致表已经存在,但Django又尝试创建一次。 解决方法: 可以尝试删除冲突的迁移文件,然后再重新执行数据迁移操作。 3. 数据库连接的问题:可能是数据库连接有问题,导致Django无法正确检测到表是否已存在。 解决方法: 可以检查数据库连接配置是否正确,确保数据库正常连接。可以尝试重新配置数据库连接参数,然后再执行创建表的操作。 无论是哪一种情况,我们都需要清楚地了解具体的环境和操作步骤,以便更准确地找到解决方法。同时,根据错误信息,可以尝试在相关的Django配置文件中检查是否有多次创建表的操作,或者排查数据库迁移文件是否有冲突。 ### 回答2: "table 'django_content_type' already exists"的意思是在使用Django时,尝试创建一个叫做'django_content_type'的数据表,但是这个表已经存在了。 造成这个问题的原因可能是之前已经在数据库中创建了这个表,而在创建的时候出现了某些错误导致创建过程没有正常完成。 解决这个问题的方法是通过以下步骤: 1. 确保你正在使用的数据库已经备份了所有数据,以防止数据丢失。 2. 进入数据库管理系统,可能是通过终端或者可视化工具。 3. 在数据库中运行如下SQL命令:DROP TABLE django_content_type; 这条命令将会删除已经存在的'django_content_type'表。 4. 重新运行Django应用程序,它将会尝试创建新的'django_content_type'表。 需要注意的是,删除已经存在的表会导致相关数据的丢失。因此,在执行这个操作之前,请确保你已经备份了重要的数据,并且清楚删除表的可能导致的后果。 另外,如果可能的话,你也可以尝试使用Django的迁移工具来管理数据表结构的更改,以避免手动操作数据库的风险。 ### 回答3: 这个错误提示表明在Django项目中的数据库中已经存在一个名为'django_content_type'的表。通常情况下,这个表是Django用来存储模型类型和相关信息的。这个错误可能由于以下几个原因导致: 1. 数据库迁移问题:数据库迁移系统可能发生错误,导致创建'django_content_type'表的操作重复执行。可以尝试使用Django的migrate命令来修复数据库迁移问题,命令为:python manage.py migrate。 2. 数据库冲突:可能存在其他应用或插件在同一个数据库中已经创建了一个名为'django_content_type'的表,并且与Django项目产生了冲突。解决方法可以是修改表名,或者将冲突的表进行合并。 3. 数据库备份还原:如果之前进行了数据库备份还原操作,可能会导致'django_content_type'表重复存在。可以通过删除重复的表来解决此问题,命令为:python manage.py dbshell,进入数据库命令行,然后执行SQL命令:DROP TABLE django_content_type; 在解决此问题之前,务必备份好数据库,以免造成数据丢失或不可恢复的错误。如果以上方法无法解决问题,可以尝试检查Django项目的配置文件,查看是否有不正确的配置或冲突的设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草根大哥

进军大神程序员路上,谢谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值