Django 运行时出错总结

一、利用mysql作为数据库时,会报的错:

#macos
pip install Django             #version==3.1
pip install PyMySQL        #Pure Python MySQL Driver version==0.10.0

brew install mysql
pip install mysqlclient  # version==2.0.1

直接运行会报错:

version_info, _mysql.version_info, _mysql.__file__ NameError: name '_mysql' is not defined

原因:Django连接MySQL时默认使用MySQLdb驱动,但MySQLdb不支持Python3,因此这里将MySQL驱动设置为pymysql

解决方法:需要在Django项目的__init__.py文件添加以下

import pymysql
pymysql.install_as_MySQLdb()

此时,仍会报错:

'mysqlclient 1.4.0 or newer is required; you have 0.10.0.'

是因为将MySQL驱动设置为pymysql,MySQLdb的版本为0.10.0,所以不够,但实际上不影响使用。因此将报错的位置注释掉就可以了。

出错文件在:/Users/xinzipanghuang/Anaconda/anaconda3/lib/python3.7/site-packages/django/db/backends/mysql/base.py

注释掉这几句:

if version < (1, 4, 0):
  raise ImproperlyConfigured('mysqlclient 1.4.0 or newer is required; you have %s.' % Database.__version__)

即可。

二、运行时可能出现的问题

1、python manage.py runserver,打开时产生的链接会报错:

You're accessing the development server over HTTPS, but it only supports HTTP.

浏览器会出现:This site can’t provide a secure connection

解决方法:
setting.pyINSTALLED_APPS添加'sslserver';
运行命令改为:python manage.py runsslserver

2、pycharm可以新建一个Django项目,做个小APP改动几个地方就可以。

新建views.py在app目录下,定义返回函数(html内容)
同时在templates目录下,添加返回的html。
修改urls.pyurlpatterns,添加刚加入的views.py函数

3、css和js路径设置问题

Django静态style文件会放在static文件夹下,需要在setting.py中添加:

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static/')]

html文件也需要相对应改为/static/***.css

ubuntu升级mysql

1 升级前的检查准备

在终端运行命令:

mysqlcheck -u root -p --all-databases --check-upgrade

返回结果如果全部都是OK, 就表示检查没问题,进入下一步。如果有错误,看这里:https://dev.mysql.com/doc/refman/8.0/en/upgrade-prerequisites.html

2 备份

备份数据库
之前都没有使用过备份数据库,参考的这个命令:

mkdir mysql-backup
cd mysql-backup
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p

该命令各个参数解释:

–all-databases : 表示导出全部数据库

–single-transaction : 这个不太懂,网上的解释也没看明白,需要补充补充数据库基础了。。

–quick : 导出时不会将数据加载到缓存,而是直接输出。默认就是启用状态。可以使用–skip-quick 取消该选项。

–lock-tables:开始导出前,锁定所有表。当导出多个数据库时,–lock-tables分别为每个数据库锁定表。

$(date+%F)表示获取当前时间,在Linux Shell中:

date       //获取时间
2019年 08月 08日 星期四 11:40:20 CST
date +%F   //获取日期
2019-08-08
date +%s   //获取时间戳
1565235736

–user, –u指定连接的用户名

–password, –p连接数据库密码

备份MySQL设置

cd mysql-backup
sudo tar zcvf mysql_config.tar.gz /etc/mysql/

3 添加MySQL APT

下载mysql-apt-config_0.8.13-1_all.deb:https://dev.mysql.com/downloads/repo/apt/

安装:

sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb

sudo apt-get update

4 安装新版的MySQL

service mysql stop  # 先停了MySQL service

sudo apt-get install mysql-server

sudo service mysql start  # 开启MySQL service

最后检查下升级后的版本:

mysql -V

显示:

mysql  Ver 8.0.17 for Linux on x86_64 (MySQL Community Server - GPL)

已经升级成功。