You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
注意:
执行 $ python manage.py inspectdb > models.py 并使用其中的 model 应用(伪造)数据库迁移,此后,修改 model 中的字段之后可能无法生成新的数据库迁移记录。
此时,删除(或注释)model ,然后生成并应用数据库迁移(应用 delete model 的迁移记录);然后再还原修改过的 model ,即可成功生成和应用数据库迁移(应用 create model 的迁移记录)。
注意:
如果同一个 models.py 下有多个 model ,此时再次使用旧有的数据库表生成 models 之后,生成数据库迁移并伪造迁移这条记录之后,需要执行以下命令,才能在 Admin 管理后台为其他管理员设置这个 model 的权限。
$ python manage.py migrate app_label
附:
“Django 连接已存在的数据库(以 MySQL 为例)自动生成 models,并伪造数据库迁移”通常在本地环境而非生产环境(服务器环境)中进行。
所以部署 Django 项目到服务器时,并且本地使用的 MySQL 和生产环境的 MySQL 数据库是分离的,此时在 Django 项目的 settings.py 模块中配置好线上生产环境的 MySQL 连接设置(注释掉本地环境的 MySQL 连接配置)后,只需要执行以下正常的数据库迁移命令,不需要“伪造数据库迁移”:
$ python manage.py makemigrations app02
SystemCheckError: System check identified some issues:
ERRORS: om_customer: (models.E028) db_table 'om_customer' is used by multiple models: app01.OmCustomer, app02.OmCustomer.
The text was updated successfully, but these errors were encountered:
环境:
参考:
执行上一步,使用已有的数据库生成 models 后,执行下面数据库迁移命令。参考:
注意:
执行
$ python manage.py inspectdb > models.py
并使用其中的 model 应用(伪造)数据库迁移,此后,修改 model 中的字段之后可能无法生成新的数据库迁移记录。此时,删除(或注释)model ,然后生成并应用数据库迁移(应用 delete model 的迁移记录);然后再还原修改过的 model ,即可成功生成和应用数据库迁移(应用 create model 的迁移记录)。
注意:
如果同一个 models.py 下有多个 model ,此时再次使用旧有的数据库表生成 models 之后,生成数据库迁移并伪造迁移这条记录之后,需要执行以下命令,才能在 Admin 管理后台为其他管理员设置这个 model 的权限。
附:
“Django 连接已存在的数据库(以 MySQL 为例)自动生成 models,并伪造数据库迁移”通常在本地环境而非生产环境(服务器环境)中进行。
所以部署 Django 项目到服务器时,并且本地使用的 MySQL 和生产环境的 MySQL 数据库是分离的,此时在 Django 项目的 settings.py 模块中配置好线上生产环境的 MySQL 连接设置(注释掉本地环境的 MySQL 连接配置)后,只需要执行以下正常的数据库迁移命令,不需要“伪造数据库迁移”:
如果在执行上面
$ python manage.py migrate
命令后,出现以下报错:django.db.utils.IntegrityError: (1215, 'Cannot add foreign key constraint')
参考:https://stackoverflow.com/questions/28561458/django-mysql-error-when-creating-tables ,请先执行:
然后再次执行:
附:在项目中新建一个 app ,并第二次使用原来的某个数据库表(model)(作为外键使用)
在项目中新建一个 app:
在 app02/models.py 中第二次使用数据库原有的某个数据库表(model),主要是作为外键使用:
因为这个 model(数据表)已经被项目中另一个 app01 使用并管理了(
managed = True
),如果此处注释掉managed = False
,执行以下命令将会报错:$ python manage.py makemigrations app02 SystemCheckError: System check identified some issues: ERRORS: om_customer: (models.E028) db_table 'om_customer' is used by multiple models: app01.OmCustomer, app02.OmCustomer.
The text was updated successfully, but these errors were encountered: