使用Docker跑MySQL 作为Django的存储后端
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的存储后端的更多相关文章
- Docker的Mysql数据库:把数据存储在本地目录
Docker mysql 把数据存储在本地目录,很简单,只需要映射本地目录到容器即可 1.加上-v参数 $ docker run -d -e MYSQL_ROOT_PASSWORD=admin --n ...
- docker配置mysql主从与django实现读写分离
一.搭建主从mysql环境 1 下载mysql镜像 docker pull mysql:5.7 2 运行刚下载的mysql镜像文件 # 运行该命令之前可以使用`docker images`是否下载成功 ...
- 阿里云服务器centos7,docker部署mysql+Redis+vue+springboot+Nginx+fastdfs,亲测可用
一.购买云服务器 我是今年双十一期间在阿里云购买的服务器, 简单配置2核_4G_40G_3M,三年用了不到800块,不过当时我记得腾讯云更便宜,个人感觉,阿里的云服务器更加的稳定, 毕竟身经百战, 经 ...
- Docker学习实践 - Docker安装MySql数据库
Docker安装MySQL数据库 1.Ubuntu安装MySQL安装 (1)安装编译源码需要的包 sudo apt-get install make cmake gcc g++ bison libnc ...
- Docker部署MySQL容器
从仓库下载镜像 sudo docker pull mysql:5.7 创建容器 docker run --name="mysql" \ -p 3306:3306 \ -v /U ...
- docker启动mysql
docker启动mysql docker run -p 3306:3306 -v /dockermysqlcfg/config/my.cnf:/etc/mysql/my.cnf -v /dockerm ...
- 在Centos 7中使用 Docker搭建MySQL异地双向复制环境
(0)一些准备操作: Centos安装好之后(这里使用的是vm虚拟机) 将当前用户添加到sudoers中: su root vim /etc/sudoers 找到 root ALL=(ALL) ALL ...
- docker(部署常见应用):docker部署mysql
上节回顾:docker(部署常见应用):docker部署nginx docker部署mysql:5.7.26 # 下载镜像 docker pull mysql: # 查看镜像 docker image ...
- Docker搭建MySQL的PXC集群
原文:Docker搭建MySQL的PXC集群 一.简介 PXC属于一套近乎完美的mysql高可用集群解决方案,相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galer ...
随机推荐
- Java 继承、抽象、接口
一.继承 1. 概述 继承是面向对象的重要特征之一,当多个类中存在相同的属性和行为时,将这些内容抽取到单独一个类中,那多个类中无需再定义这些属性和行为,只需继承那个单独的类即可. 单独的类称为父类或超 ...
- 【框架学习与探究之消息队列--EasyNetQ(2)】
声明 本文欢迎转载,系博主原创,本文原始链接地址:http://www.cnblogs.com/DjlNet/p/7654902.html 前言 此文章,是承接上篇:[框架学习与探究之消息队列--Ea ...
- PPT排版细节,写给大家看的设计书,完美总结
原创作者:陈玓玏 相信每一位小宝贝在工作中都会被老板用PPT虐无数遍,虐到自己怀疑人生.奈何在网上随手一搜,出现的各类招聘要求都躲不开"熟练掌握PPT制作",尤其是各类科技公司.咨 ...
- 【转载】CSS3 Transitions, Transforms和Animation使用简介与应用展示
文章转载自 张鑫旭-鑫空间-鑫生活 http://www.zhangxinxu.com/wordpress/ 原文链接:http://www.zhangxinxu.com/wordpress/?p=1 ...
- WPF checkbox文字下掉
WPF checkbox文字下掉 可以使用 <Style TargetType="CheckBox"> <Setter Property="Margin ...
- UVW源码漫谈(四)
十一假期后就有点懒散,好长时间都没想起来写东西了.另外最近在打LOL的S赛.接触LOL时间不长,虽然平时玩的比较少,水平也相当菜,但是像这种大型的赛事有时间还是不会错过的.主要能够感受到选手们对竞技的 ...
- C#导出.csv格式的excel表
.cs文件直接贴代码: using System; using System.Collections.Generic; using System.Data; using System.IO; usin ...
- IO(Input&Output)流の介绍
1.导读 对于设备之间的流动(即写入数据或读出数据),Java专门用Java.io包进行操作.这些数据的流动便是我们所说的数据的输入输出流(IO流). 2.数据流的处理:字节流和字符流 数据的基本单位 ...
- C++参数传递(01)
*是取值运算符,对地址使用可以获得地址中储存的数值:对于指针a,*a表示取a中的值 &是地址运算符,对变量使用可以获得该变量的地址. 对于变量b,*b表示取b的地址 别名(引用):主要用于做函 ...
- makefile学习笔记(一)
1.1:make概述 在linux环境下使用make工具能够比较容易的构建一个属于自己的工程,整个工程的编译只需要一个命令就可以完成编译.连接以至于最后的执行.不过我们需要投入一些时间去学习如何完成m ...