Docker的好处不科普了,用过的都说好。

不想污染自己开发机器上的文件环境,本萌新使用Docker运行Mysql,Redis来作为Django的存储后端和缓存。

在第一次安装过程中,我遇到了一些问题,是mysqlclient客户端的问题。这个问题及其解决办法参见MacOS 下安装mysqlclient 的问题及解决办法.

在Django的settings.py文件中,我的关于数据库的配置如下

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'solink_ticket_srv',
'USER': 'root',
'PASSWORD': 'aZhiUkZoXONpFzs8',
'HOST': 'localhost',
'PORT': '3306'
}
}

运行migrate后,Django抛出了一个异常,浓缩成一句就是

'Can't connect to local MySQL server through socket '/tmp/mysql.sock'

查找Google,发现了问题的所在

解答链接

原因在于我们使用localhost去连接MySQL时,将尝试通过sock file的方式去连接数据库,而我们的mysql是运行在Docker里头的,通过TCP/IP通信,所以便会出现上面的情况。

我们将settings.py文件修改如下便可实现

    DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'solink_ticket_srv',
'USER': 'root',
'PASSWORD': 'aZhiUkZoXONpFzs8',
'HOST': '127.0.0.1',
'PORT': '3306'
}
}

编写Django单元测试。

运行django test时,上述配置文件暴露了缺点。字符集问题。

正常运行Django程序时,数据库是我们创建的,此时,数据库的字符集是我们在创建数据库时指定的,当应用写入非ASCII字符时,并不会出现大问题。

但是django test运行时将创建测试数据库和测试表,上述的配置文件并没有指定字符集,那么Django创建的数据库字符集,将按照数据库的默认字符集运行,此时,如果很不幸,我们的测试中存在非ASCII字符,那么写入时Django一定会抛出异常。

此时我们的要修改配置文件为如下,其实就是针对测试数据库,指定字符集

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'solink_ticket_srv',
'USER': 'solink_ticket_srv',
'PASSWORD': 'aZhiUkZoXONpFzs8',
'HOST': DB_HOST,
'PORT': '3306', 'TEST': {
'CHARSET': 'utf8mb4',
'COLLATION': 'utf8mb4_unicode_ci'
}
}
}

使用Docker跑MySQL 作为Django的存储后端的更多相关文章

  1. Docker的Mysql数据库:把数据存储在本地目录

    Docker mysql 把数据存储在本地目录,很简单,只需要映射本地目录到容器即可 1.加上-v参数 $ docker run -d -e MYSQL_ROOT_PASSWORD=admin --n ...

  2. docker配置mysql主从与django实现读写分离

    一.搭建主从mysql环境 1 下载mysql镜像 docker pull mysql:5.7 2 运行刚下载的mysql镜像文件 # 运行该命令之前可以使用`docker images`是否下载成功 ...

  3. 阿里云服务器centos7,docker部署mysql+Redis+vue+springboot+Nginx+fastdfs,亲测可用

    一.购买云服务器 我是今年双十一期间在阿里云购买的服务器, 简单配置2核_4G_40G_3M,三年用了不到800块,不过当时我记得腾讯云更便宜,个人感觉,阿里的云服务器更加的稳定, 毕竟身经百战, 经 ...

  4. Docker学习实践 - Docker安装MySql数据库

    Docker安装MySQL数据库 1.Ubuntu安装MySQL安装 (1)安装编译源码需要的包 sudo apt-get install make cmake gcc g++ bison libnc ...

  5. Docker部署MySQL容器

    从仓库下载镜像 sudo docker pull mysql:5.7   创建容器 docker run --name="mysql" \ -p 3306:3306 \ -v /U ...

  6. docker启动mysql

    docker启动mysql docker run -p 3306:3306 -v /dockermysqlcfg/config/my.cnf:/etc/mysql/my.cnf -v /dockerm ...

  7. 在Centos 7中使用 Docker搭建MySQL异地双向复制环境

    (0)一些准备操作: Centos安装好之后(这里使用的是vm虚拟机) 将当前用户添加到sudoers中: su root vim /etc/sudoers 找到 root ALL=(ALL) ALL ...

  8. docker(部署常见应用):docker部署mysql

    上节回顾:docker(部署常见应用):docker部署nginx docker部署mysql:5.7.26 # 下载镜像 docker pull mysql: # 查看镜像 docker image ...

  9. Docker搭建MySQL的PXC集群

    原文:Docker搭建MySQL的PXC集群 一.简介 PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galer ...

随机推荐

  1. python读取命令行参数的方法

    1.sys模块 需要模块:sys参数个数:len(sys.argv)脚本名:    sys.argv[0]参数1:     sys.argv[1]参数2:     sys.argv[2] test.p ...

  2. python中package注意事项

    个人工作中的SSD.Cardreader.Camera.Audio模块文档组织形式如下: RclLib __init__.py RclLegacy.py modules AgilentOp.py Uv ...

  3. 【JAVA零基础入门系列】Day8 Java的控制流程

    什么是控制流程?简单来说就是控制程序运行逻辑的,因为程序一般而言不会直接一步运行到底,而是需要加上一些判断,一些循环等等.举个栗子,就好比你准备出门买个苹果,把这个过程当成程序的话,可能需要先判断一下 ...

  4. MySQL的备份与还原以及常用数据库查看命令

    MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:\Program Files\MySQL\MySQL Serv ...

  5. Spring装配Bean之组件扫描和自动装配

    Spring从两个角度来实现自动化装配: 组件扫描:Spring会自动发现应用上下文中所创建的bean. 自动装配:Spring自动满足bean之间的依赖. 案例:音响系统的组件.首先为CD创建Com ...

  6. java选择结构

    /**选择结构*/ public class Demo06{ public static void main(String []args){ // if...else...型 String name ...

  7. PHP的Session机制

    客户端浏览器和服务器之间通信使用的http协议是一种无状态的协议,在它看来,客户端发起的每个请求都是独立.没有关联的.然而,在实际的Web应用开发中,服务器却经常需要根据用户以往的一些状态或数据对请求 ...

  8. ASP.NET Core 开源GitServer 实现自己的GitHub

    ASP.NET Core 2.0 开源Git HTTP Server,实现类似 GitHub.GitLab. GitHub:https://github.com/linezero/GitServer ...

  9. 基于场景解析RecyclerView的回收复用机制原理

    最近在研究 RecyclerView 的回收复用机制,顺便记录一下.我们知道,RecyclerView 在 layout 子 View 时,都通过回收复用机制来管理.网上关于回收复用机制的分析讲解的文 ...

  10. 学习笔记TF052:卷积网络,神经网络发展,AlexNet的TensorFlow实现

    卷积神经网络(convolutional neural network,CNN),权值共享(weight sharing)网络结构降低模型复杂度,减少权值数量,是语音分析.图像识别热点.无须人工特征提 ...