本文使用的华为弹性云服务器操作系统为centos 8.1,MySQL数据库为5.7.26。
基于Django开发个人博客(https://www.solutionworks.cn)时,选择文章对应缩略图,完成文章编写并提交保存时,发生错误,在浏览器中的错误信息为:Server Error(500)。本文记录了问题的发现与排查解决过程。
基于Django开发个人博客(https://www.solutionworks.cn)时,提供按照年份及月份实现博客文档归档功能是个人博客极其常见的功能,实现这一功能的过程中,必然要获取数据库中记录的文档创建或发布时间,统计某月创建或发布文章数量信息。实现的过程中,发现通过程序取得的时间可能存在和数据库存储的时间不一致的情况(如实际某月存在创建或发布的文章,但是根据程序获取的时间却查不到对应的文章),改用其他方法实现相同功能时,甚至出现关于MySQL时区设置问题的错误提示(如Database returned an invalid datetime value. Are time zone definitions for your database installed?)等问题。本文主要记录了上述描述问题的发现过程及其解决方法,希望对其他遇到类似问题的人有所帮助。
自五月份下旬开始,断断续续学习Python及基于Python的Web框架--Django,根据网上的案例(https://www.django.cn/article/show-23.html)一步一步学习个人博客系统的开发,到7月末初步掌握并完成开发。8月4日,购买了阿里云服务器ECS,开始部署,主要是基于CentOS和Nginx和Uwsgi进行部署,期间前后持续经历了三周自由时间,服务器重置了两次,期间踩坑不断,一度心灰意冷,还好坚持了下来,最终完成系统部署,初尝系统上线喜悦,基本掌握了部署的基本顺序,后续会专门进行总结。本文主要记录了基于Django的博客系统上线过程中,遇到的最后一个问题(connect() failed (111: Connection refused) )及其解决的办法,希望对其他人有用。
Django是通过Model操作数据库,根据应用对应models.py文件定义数据表对象类自动生成(在Pycharm中,通过命令行指令完成数据库结构自动生成及数据迁移)相应的数据库,对于使用数据表(如名称为article)中的一个字段(字段为tag)和另外一个数据表的外键(Foreign Key)建立多对多关系,通常系统会默认以该数据表的名称(article)和该表中的该字段(tag)形成关联数据表(blog_article_tag,其中blog为应用名称),当数据表的字段名称改变(如tag变为tags)时,自动生成的关联数据表名称并不会随之而改变(比如应该改变为blog_article_tags),通常导致数据表访问异常,本文主要针对这一问题结合笔者实践给出解决的办法。