Django migrate 报错,通过fake 和 --fake-initial来修复

mysql_exceptions.OperationalError: (1050, "Table 'api' already exists")

因为这些表已经存在了,需要通过migrate --fake-initial 告诉Django已经存在

 

[root@izwz9awyk38uq20rb3czmnz ~]# docker exec -it fasterrunner /bin/sh
# python3 manage.py makemigrations --settings=FasterRunner.settings.pro fastrunner
No changes detected in app 'fastrunner'
# python3 manage.py migrate --settings=FasterRunner.settings.pro fastrunner
Operations to perform:
  Apply all migrations: fastrunner
Running migrations:
  Applying fastrunner.0001_initial...Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/utils.py", line 83, in _execute
    return self.cursor.execute(sql)
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/mysql/base.py", line 71, in execute
    return self.cursor.execute(query, args)
  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/cursors.py", line 250, in execute
    self.errorhandler(self, exc, value)
  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
    raise errorvalue
  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/cursors.py", line 247, in execute
    res = self._query(query)
  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/cursors.py", line 412, in _query
    rowcount = self._do_query(q)
  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/cursors.py", line 375, in _do_query
    db.query(q)
  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/connections.py", line 276, in query
    _mysql.connection.query(self, query)
_mysql_exceptions.OperationalError: (1050, "Table 'api' already exists")

初始化已存在的表 migrate --fake-initial

 

# 指定Django的setting配置文件执行migrate 
 python3 manage.py migrate --fake-initial --settings=FasterRunner.settings.pro

将会更新django_migrations

image.png

 

提示1054, "Unknown column 'name' in 'django_content_type'"

 

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, djcelery, fastrunner, fastuser, sessions
Running migrations:
  Applying contenttypes.0001_initial... FAKED
  Applying auth.0001_initial... FAKED
  Applying admin.0001_initial... FAKED
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name...Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/utils.py", line 85, in _execute
    return self.cursor.execute(sql, params)
  File "/usr/local/lib/python3.6/dist-packages/django/db/backends/mysql/base.py", line 71, in execute
    return self.cursor.execute(query, args)
  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/cursors.py", line 250, in execute
    self.errorhandler(self, exc, value)
  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/connections.py", line 50, in defaulterrorhandler
    raise errorvalue
  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/cursors.py", line 247, in execute
    res = self._query(query)
  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/cursors.py", line 412, in _query
    rowcount = self._do_query(q)
  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/cursors.py", line 375, in _do_query
    db.query(q)
  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/connections.py", line 276, in query
    _mysql.connection.query(self, query)
_mysql_exceptions.OperationalError: (1054, "Unknown column 'name' in 'django_content_type'")

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

因为django_content_type

image.png


需要django_content_type是空的
需要加上项目的app_label和model

image.png

 

1054, "Unknown column 'django_content_type.name' in 'field list'"

 

  File "/usr/local/lib/python3.6/dist-packages/MySQLdb/connections.py", line 276, in query
    _mysql.connection.query(self, query)
django.db.utils.OperationalError: (1054, "Unknown column 'django_content_type.name' in 'field list'")

这是django_content_type中缺少新增加的表,补上就好

image.png

fake告诉Django已经在的表字段

 

# python3 manage.py migrate --settings=FasterRunner.settings.pro fastrunner --fake
Operations to perform:
  Apply all migrations: fastrunner
Running migrations:
  No migrations to apply.

最后执行新增加的表字段

 

# python3 manage.py migrate --settings=FasterRunner.settings.pro fastrunner
Operations to perform:
  Apply all migrations: fastrunner
Running migrations:
  Applying fastrunner.0012_auto_20200107_1126... OK



作者:梨花菜
链接:https://www.jianshu.com/p/57761803f7b3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值