django 迁移 与 精准迁移 与 二次迁移 migrations 以及错误处理

首先数据库迁移的两大命令:

  python manage.py makemigrations & python manage.py migrate

前者是将model层转为迁移文件migration,后者将新版本的迁移文件执行,更新数据库。

这两中命令调用默认为全局,即对所有最新更改的model或迁移文件进行操作。如果想对部分app进行操作,就要在其后追加app name:

  $ python manage.py makemigrations app_name
  $ python manage.py migrate app_name

如果想要精确到某个迁移文件(0004_xxx.py):

  $ python manage.py migrate app_name 0004

如果想看迁移文件的执行状态,可以用showmigrations命令查看:

  $ python manage.py showmigrations
  admin
   [X] 0001_initial
  auth
   [X] 0001_initial
   [X] 0002_alter_permission_name_max_length
 
 

  

#评论 关联OrderGoods 反查所有评论
  orders = sku_data.ordergoods_set.all()

关联时提示没有 ordergoods_set  报错

之前迁移数据库时 不知怎么地           orders模块的没有迁移   数据库没有 df_order_info 与 df_order_goods 表
 
然后又重新执行了
python manage.py makemigrations
python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, goods, orders, sessions, users
Running migrations:
  Applying goods.0001_initial...Traceback (most recent call last):
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/backends/utils.py", line 63, in execute
    return self.cursor.execute(sql)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 101, in execute
    return self.cursor.execute(query, args)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/cursors.py", line 170, in execute
    result = self._query(query)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/cursors.py", line 328, in _query
    conn.query(q)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/connections.py", line 517, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/connections.py", line 732, in _read_query_result
    result.read()
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/connections.py", line 1075, in read
    first_packet = self.connection._read_packet()
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/connections.py", line 684, in _read_packet
    packet.check_error()
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/protocol.py", line 220, in check_error
    err.raise_mysql_exception(self._data)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
    raise errorclass(errno, errval)
pymysql.err.InternalError: (1050, "Table 'df_goods' already exists")

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "../../manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
    utility.execute()
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/core/management/__init__.py", line 355, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/core/management/base.py", line 283, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/core/management/base.py", line 330, in execute
    output = self.handle(*args, **options)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/core/management/commands/migrate.py", line 204, in handle
    fake_initial=fake_initial,
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/migrations/executor.py", line 115, in migrate
    state = self._migrate_all_forwards(state, plan, full_plan, fake=fake, fake_initial=fake_initial)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/migrations/executor.py", line 145, in _migrate_all_forwards
    state = self.apply_migration(state, migration, fake=fake, fake_initial=fake_initial)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/migrations/executor.py", line 244, in apply_migration
    state = migration.apply(state, schema_editor)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/migrations/migration.py", line 129, in apply
    operation.database_forwards(self.app_label, schema_editor, old_state, project_state)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/migrations/operations/models.py", line 97, in database_forwards
    schema_editor.create_model(model)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/backends/base/schema.py", line 302, in create_model
    self.execute(sql, params or None)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/backends/base/schema.py", line 119, in execute
    cursor.execute(sql, params)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/backends/utils.py", line 80, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/backends/utils.py", line 65, in execute
    return self.cursor.execute(sql, params)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/utils.py", line 94, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/utils/six.py", line 685, in reraise
    raise value.with_traceback(tb)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/backends/utils.py", line 63, in execute
    return self.cursor.execute(sql)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/django/db/backends/mysql/base.py", line 101, in execute
    return self.cursor.execute(query, args)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/cursors.py", line 170, in execute
    result = self._query(query)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/cursors.py", line 328, in _query
    conn.query(q)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/connections.py", line 517, in query
    self._affected_rows = self._read_query_result(unbuffered=unbuffered)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/connections.py", line 732, in _read_query_result
    result.read()
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/connections.py", line 1075, in read
    first_packet = self.connection._read_packet()
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/connections.py", line 684, in _read_packet
    packet.check_error()
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/protocol.py", line 220, in check_error
    err.raise_mysql_exception(self._data)
  File "/home/czpubuntu/.virtualenvs/django_py3/lib/python3.6/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
    raise errorclass(errno, errval)
django.db.utils.InternalError: (1050, "Table 'df_goods' already exists")

报错  网上搜了 一些方法:

查看迁移内容
python manage.py showmigrations

执行

 python manage.py migrate --fake

再次查看    成这样了

  python manage.py showmigrations

 

 能正常使用     之前没有出现这样的问题

没有完全采用 留一个参考:https://blog.csdn.net/weixin_44575037/article/details/109078101

 

在后来又出现了这个问题  

找了许久    提示意思是

表 df_order_goods 里没有 sku_id 字段
django.db.utils.InternalError: (1054, "Unknown column 'df_order_goods.sku_id' in 'field list'")

之前 迁移数据库 好像有这个字段  可能是由于上面迁移的BUG 导致的

解决办法:

  手动添加

    alter table df_order_goods add sku_id int not null;

 

有好的方法还请留言...............................

如果在有问题在解决吧!

 

  
posted @ 2020-10-28 13:02  Py_beginner  阅读(494)  评论(0编辑  收藏  举报