本文使用的华为弹性云服务器操作系统为centos 8.1,MySQL数据库为5.7.26。
基于Django开发个人博客(https://www.solutionworks.cn)时,提供按照年份及月份实现博客文档归档功能是个人博客极其常见的功能,实现这一功能的过程中,必然要获取数据库中记录的文档创建或发布时间,统计某月创建或发布文章数量信息。实现的过程中,发现通过程序取得的时间可能存在和数据库存储的时间不一致的情况(如实际某月存在创建或发布的文章,但是根据程序获取的时间却查不到对应的文章),改用其他方法实现相同功能时,甚至出现关于MySQL时区设置问题的错误提示(如Database returned an invalid datetime value. Are time zone definitions for your database installed?)等问题。本文主要记录了上述描述问题的发现过程及其解决方法,希望对其他遇到类似问题的人有所帮助。
Django是通过Model操作数据库,根据应用对应models.py文件定义数据表对象类自动生成(在Pycharm中,通过命令行指令完成数据库结构自动生成及数据迁移)相应的数据库,对于使用数据表(如名称为article)中的一个字段(字段为tag)和另外一个数据表的外键(Foreign Key)建立多对多关系,通常系统会默认以该数据表的名称(article)和该表中的该字段(tag)形成关联数据表(blog_article_tag,其中blog为应用名称),当数据表的字段名称改变(如tag变为tags)时,自动生成的关联数据表名称并不会随之而改变(比如应该改变为blog_article_tags),通常导致数据表访问异常,本文主要针对这一问题结合笔者实践给出解决的办法。
应用Django Web框架开发应用时,MySQL是经常使用到的数据库之一,如何在Django应用中使用MySQL数据库,以及如何避免与解决使用过程中出现的一些问题,本文将一些异常解决方法整理如下,供可能遇到问题的各位同仁参考。