关于因字段改变导致参引数据表访问异常问题解决

关于因字段改变导致参引数据表访问异常问题解决

Django是通过Model操作数据库,根据应用对应models.py文件定义数据表对象类自动生成(在Pycharm中,通过命令行指令完成数据库结构自动生成及数据迁移)相应的数据库,对于使用数据表(如名称为article)中的一个字段(字段为tag)和另外一个数据表的外键(Foreign Key)建立多对多关系,通常系统会默认以该数据表的名称(article)和该表中的该字段(tag)形成关联数据表(blog_article_tag,其中blog为应用名称),当数据表的字段名称改变(如tag变为tags)时,自动生成的关联数据表名称并不会随之而改变(比如应该改变为blog_article_tags),通常导致数据表访问异常,本文主要针对这一问题结合笔者实践给出解决的办法。

一、  相关软件版本状况

本文使用的Django版本为3.0版,python版本为3.8.3,MySQL workbench为8.0。

二、  问题描述

对于使用数据表(如名称为article)中的一个字段(字段为tag)和另外一个数据表(如名称为Tag)的外键(Foreign Key)建立多对多关系,通常系统会默认以该数据表的名称(article)和该表中的该字段(tag)形成关联数据表(blog_article_tag,其中blog为应用名称),当数据表的字段名称改变(如tag变为tags)时,在Pycharm中通过命令行指令完成数据表对应字段的修改与数据迁移(执行“Python manage.py makemigrations”和“Python manage.py migrate”操作)。但通常之前按照一定规则自动生成的关联数据表名称并不会随之而改变(比如应该改变为blog_article_tags),从而导致数据表访问异常,对应信息提示如下:

关于因字段改变导致参引数据表访问异常问题解决

对于这一问题,目前笔者在Django中并没有找到问题的答案。

三、    数据表名称调整

既然是使用MySQL数据库,最好的办法是求助MySQL workbench,找到对应数据库,找到之前建立的数据表(blog_article_tag),点击弹出右键菜单,选中“Alter Table…”,在随之打开的界面实现数据表名称的调整,具体操作加下图:

关于因字段改变导致参引数据表访问异常问题解决

完成上述修改后,重新刷新页面,问题解决。当然,如果能在Django和Pycharm中解决应该是最完美的,但我不知到怎么解决,如果您知道,不吝赐教。

文章转自:https://www.solutionworks.cn/show-2.html