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'}}
}

转载于:https://www.cnblogs.com/pluviophile/p/7860956.html

使用Docker跑MySQL 作为Django的存储后端相关推荐

  1. 你在 Docker 中跑 MySQL?恭喜你,可以下岗了!

    欢迎关注方志朋的博客,回复"666"获面试宝典 容器的定义:容器是为了解决"在切换运行环境时,如何保证软件能够正常运行"这一问题. 目前,容器和 Docker ...

  2. mysql自动从另外表取数_你在 Docker 中跑 MySQL?恭喜你,好下岗了!

    容器的定义:容器是为了解决"在切换运行环境时,如何保证软件能够正常运行"这一问题. 目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也 ...

  3. docker管理mysql风险_不要再问了,数据库不建议上Docker

    不要再问了,数据库不建议上Docker 前言 近2年Docker非常的火热,各位开发者恨不得把所有的应用.软件都部署在Docker容器中,但是您确定也要把数据库也部署的容器中吗? 这个问题不是子虚乌有 ...

  4. docker mysql data volume_Docker 持久化存储, Data Volume/Bind Mounting

    docker容器, 再启动之后 我们可以对其进行 修改删除等等. 如果是一个数据库的容器, 里面的数据 不想随着这个容器的消失, 而消失.  就需要持久化数据存储. Data Volume 这是 do ...

  5. Python开发之:Django基于Docker实现Mysql数据库读写分离、集群、主从同步详解 | 原力计划...

    作者 | Pythonicc 责编 | 王晓曼 出品 | CSDN博客 简介 1.什么是数据库读写分离 读写分离,基本的原理是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELET ...

  6. ceph集群和数据库到底是储存数据_Python开发之:Django基于Docker实现Mysql数据库读写分离、集群、主从同步详解 | 原力计划...

    作者 | Pythonicc责编 | 王晓曼出品 | CSDN博客简介1.什么是数据库读写分离读写分离,基本的原理是让主数据库处理事务性增.改.删操作(INSERT.UPDATE.DELETE),而从 ...

  7. Docker学习三 Docker安装Mysql

    Docker安装Mysql 文章目录 Docker安装Mysql 前言 查看docker镜像 查看mysql镜像版本 下载镜像 运行mysql 前言 mysql数据库是后端开发经常用到的,而且有时候还 ...

  8. docker oracle navicat_拥抱开源从零开始 Docker、Mysql amp; JPA

    MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) ...

  9. 史上最详细Docker安装Mysql 带每一步详图及解释 并教你Docker 打印容器日志!!!相信值得你的阅读!!!

    众所周知,如果我们要把项目放在服务器上运行,那么数据存储就是必需的,就用这篇小小文章记录一下我的经历吧. MySQL是一个关系型数据库管理系统,也是是最流行的关系型数据库管理系统之一,在 WEB 应用 ...

最新文章

  1. 仿中国比特币首页趋势图,折线图,k线图
  2. Android数据库高手秘籍
  3. 安装ESXI 5.1
  4. springboot 之 webscoket 服务端推送
  5. 【辨异】entice, tempt, lure, seduce, induce
  6. Iocomp ActiveX v5 SP6 带OPC -Crack
  7. SecureCRT下载和破解
  8. Anaconda下载源设置及还原默认
  9. 西门子与源讯联手打造网络安全技术;全球首个5G全息国际通话打通 | IoT黑板报...
  10. 头条 上传图片大小_遇到不会注册今日头条号,这么办?
  11. wordpress英文主题怎样汉化成中文网站模板
  12. win2008r2 惠普g160鼠标_惠普M260鼠标驱动简单体验
  13. 电脑服务器地址能修改吗,电脑ip地址可以随便改吗
  14. 面试重点:starter原理以及自己动手实现一个starter
  15. 使用FontCreator打造属于自己的字体
  16. Mysql-DATE_FORMAT()日期格式
  17. 舆情监测平台都有哪些,舆情监测平台使用工作总结
  18. 串口调试助手版本合集
  19. ZOJ 3898 Stean (求旋转体体积与面积)
  20. pageoffice 骑缝章_PageOffice V4.0

热门文章

  1. 对比Vector、ArrayList、LinkedList有何区别(转)
  2. 导入一个maven项目出现红色叉号的解决办法
  3. c语言表达式1 33的值是,2015年计算机二级C语言测试题及答案(1)
  4. 怎么用debug看jdbc查询的resultset中查出的数据_用了这个 ORM 工具,我只用一天就把项目数据库给换了
  5. oracle 删除xml记录,Oracle之xml的增删改查操作
  6. python请输入星期几的第一个_python如何获取星期几
  7. 怎么配置宝塔linux环境,宝塔面板linux怎么安装
  8. 人脸检测(十七)--Faceness-Net
  9. 孙鑫-MFC笔记三--绘图
  10. ORACLE数据库测试题(一)