flask项目因为需求变更,需要迁移到mysql数据库。

项目计划采用docker来管理,采用mysql官网的docker来管理。

删除数据库目录。

sudo rm -rf data/

删除原日志目录。

$ rm -rf log/

修改docker-compose.yml 文件。

从原来一个项目中复制过来的docker-compose.yml文件,内容如下:

estimate:

# restart: always

build: ./app

ports:

- "8000:8000"

links:

- mysql:mysql

volumes:

- ./app:/usr/src/app

env_file: .env

mysql:

# restart: always

image: mysql:latest

env_file: .env

ports:

- "3306:3306"

volumes:

- ./data:/var/lib/mysql

- ./data/my.cnf:/etc/mysql/my.cnf

environment:

- MYSQL_ROOT_PASSWORD=estimate

配置文件改好了,准备构建镜像:

docker-compose build

看起来一切顺利。

ERROR: for mysql oci runtime error: rootfs_linux.go:53: mounting "/var/lib/docker/aufs/mnt/258ac98827bf738a0196693883820ebb3e4801320a2a3542a39076edf9ef1649/etc/mysql/my.cnf" to rootfs "/var/lib/docker/aufs/mnt/258ac98827bf738a0196693883820ebb3e4801320a2a3542a39076edf9ef1649" caused "not a directory"

Traceback (most recent call last):

File "/usr/local/bin/docker-compose", line 9, in

load_entry_point('docker-compose==1.7.1', 'console_scripts', 'docker-compose')()

File "/usr/local/lib/python2.7/dist-packages/compose/cli/main.py", line 63, in main

log.error(e.msg)

AttributeError: 'ProjectError' object has no attribute 'msg'

看起来情况不太妙,原因来配置不能正常拉起来,貌似my.cnf不是一个目录的原因,改为映射/etc/mysql试了一下,mysql是初始化成功了,但是容器与映射目录中均没有my.cnf文件,暂不知道原因,先去掉对my.cnf的映射,再次尝试:

$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

6112bf03d615 estimate_estimate "/usr/local/bin/super" 29 seconds ago Up 28 seconds 5000/tcp, 0.0.0.0:8000->8000/tcp estimate_estimate_1

5bed08089c16 mysql:latest "docker-entrypoint.sh" 30 seconds ago Up 29 seconds 0.0.0.0:3306->3306/tcp estimate_mysql_1

现在看起来正常多了。

4. 修改mysql的默认字符集为utf8,修改配置文件,mysql要注意不后字符集不对,后面很麻烦。

$ docker exec -it 5bed08089c16 /bin/bash

root@5bed08089c16:/# cd /etc/

root@5bed08089c16:/etc# ll

bash: ll: command not found

root@5bed08089c16:/etc# cd mysql

root@5bed08089c16:/etc/mysql# ll

bash: ll: command not found

root@5bed08089c16:/etc/mysql# ls

conf.dmy.cnf

root@5bed08089c16:/etc/mysql# vim my.cnf

bash: vim: command not found

root@5bed08089c16:/etc/mysql# vi my.cnf

bash: vi: command not found

root@5bed08089c16:/etc/mysql#

郁闷了,容器中没有vim,连vi也没有,还好有apt安装吧。。。。

root@5bed08089c16:/etc/mysql# apt-get install vim

Reading package lists... Done

Building dependency tree

Reading state information... Done

E: Unable to locate package vim

root@5bed08089c16:/etc/mysql#

什么情况,貌似,源也不正常。。。

apt-get update

apt-get install vim

不是国内源,比较慢,等的时间有点长。。。终于好了。

连接mysql查看字符集设置情况。

root@5bed08089c16:/etc/mysql# mysql -u root -p

Enter password:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 2

Server version: 5.7.13 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show variables like '%character%';

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | latin1 |

| character_set_filesystem | binary |

| character_set_results | latin1 |

| character_set_server | latin1 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

8 rows in set (0.00 sec)

准备修改字符集配置

[client]

port = 3306

socket = /var/run/mysqld/mysqld.sock

default-character-set=utf8 //added by janl

[mysqld_safe]

pid-file = /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

nice = 0

[mysqld]

skip-host-cache

skip-name-resolve

user = mysql

pid-file = /var/run/mysqld/mysqld.pid

socket = /var/run/mysqld/mysqld.sock

character_set_server=utf8 // added by janl

init_connect='SET NAMES utf8' //added by janl

port = 3306

basedir = /usr

datadir = /var/lib/mysql

tmpdir = /tmp

lc-messages-dir = /usr/share/mysql

explicit_defaults_for_timestamp

好了,让容器重启一下,让配置生效。

再次查看mysql 的字符集配置

mysql> show variables like '%character%';

+--------------------------+----------------------------+

| Variable_name | Value |

+--------------------------+----------------------------+

| character_set_client | utf8 |

| character_set_connection | utf8 |

| character_set_database | utf8 |

| character_set_filesystem | binary |

| character_set_results | utf8 |

| character_set_server | utf8 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

8 rows in set (0.01 sec)

看来字符集都改过来了,一切顺利,创建数据库。

创建数据库

mysql> CREATE DATABASE IF NOT EXISTS estimate DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

Query OK, 1 row affected (0.00 sec)

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| estimate |

| mysql |

| performance_schema |

| sys |

+--------------------+

5 rows in set (0.00 sec)

mysql> use estimate;

Database changed

mysql> show tables;

Empty set (0.00 sec)

mysql>

数据库建立起来了,然后就可以和数据库一起愉快的玩耍了。。。。。。。。

lsoci mysql_flask项目从sqlite3升级的mysql数据库相关推荐

  1. Express项目中用javascript实现连接mysql数据库

    目录 1. 在项目中操作数据库的步骤 2. 使用 mysql 模块操作MySQL数据库 1. 在项目中操作数据库的步骤 ①安装操作 MySQL 数据库的第三方模块(mysql) mysql 模块是托管 ...

  2. 计算机毕业设计Java盘山县智慧项目管理系统(源码+系统+mysql数据库+lw文档)

    计算机毕业设计Java盘山县智慧项目管理系统(源码+系统+mysql数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 开发软件:idea eclipse 前端技术:Lay ...

  3. Python项目:学生管理系统连接MySQL数据库(增删改查、排序、统计、显示所有信息)

    文章目录 一程序功能(Function) 1. 功能概述 2. 思维导图 二.开始实践 战前准备 定义学生管理系统菜单 定义主函数 1.录入学生信息 2.查找学生信息 3.删除学生信息 4.修改学生信 ...

  4. vapor mysql_无法在Vapor项目中连接我的MySQL数据库

    我是Vapor的新手,我想尝试连接我的MySQL数据库.我在官方文档中找到了如何执行此操作,但当我尝试发送查询时,它会抛出一个错误: No services are available for 'Da ...

  5. web项目中保存emoji到mysql数据库

    1.创建utf8mb4的数据库 2.如果导入sql文件,注意修改字段的字符为utf8mb4 3.web项目jdbc连接仍写做utf8 jdbcUrl=jdbc:mysql://localhost/de ...

  6. java-web项目之jsp脚本访问mysql数据库

    jsp访问数据库 1.使用jsp小脚本:<%java代码%>,就是在其中写入jdbc代码. 2.导包操作 a.java项目: 首先,将jar包复制到工程: 然后,右键该jar包->b ...

  7. 新手上路之django项目开发(二)-----mysql数据库配置及其增删改查操作

    1,数据库配置(settings.py文件配置) 我这里用的是本地数据库. DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', ...

  8. 【前端升全栈】 开发项目之数据存储(MySQL数据库)

    目录 1.MySQL简介 2.数据库操作(创建.增加.删除.查询) 3.数据库更新 4.node.js操作mysql 5.nodejs链接mysql做成工具 6.API对接mysql 7.API对接m ...

  9. 计算机毕业设计asp.net的高校科研项目管理系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 近年来,随着高校和一些大企业对科研的重视和广大教师及科研工作者对科研工作的极大热情,高校和大企业的都拥有了自己的科研管理系统且有了长足发展.但是传统的科研信息管理由于是手工操作,工作量大且容 ...

最新文章

  1. c#技巧教程(连载)
  2. tkinter实现弹出输入对话框并获取输入对话框中的值
  3. Linux: TLB 查询流程
  4. D3ctf-D3MUG(u3d
  5. elasticsearch api中的get操作
  6. 基于.NetCore3.1系列 —— 认证授权方案之授权揭秘 (下篇)
  7. php用什么电脑,我要学php了买一台什么配置的电脑最好?
  8. C#LeetCode刷题之#15-三数之和(3Sum)
  9. java支付宝rsa2签名_sign_tools_RSA256_win
  10. Pentium II Pentium III架构/微架构/流水线 (4) - P6详解 - 高速缓存/Store Buffers
  11. python读取目录里所有txt文件转excel
  12. nb模块怎么访问php文件,一个非常NB的动态聊天程序_PHP教程
  13. CSS3参考手册(所有属性)
  14. unity3D用鼠标和射线控制物体移动(二)
  15. 【C++刷LeetCode套路1】Array题型: 双指针Two Pointers套路
  16. 利用Windows11安卓子系统对APP进行渗透测试
  17. 统计学习(一):最大似然估计
  18. FileReader 文件操作
  19. 隧道技术之 外网访问内网
  20. c语言实现各种排序算法(作业:点名册排序)

热门文章

  1. C#LeetCode刷题之#463-岛屿的周长​​​​​​​(Island Perimeter)
  2. mongoose-iot_如何使用带有ESP32和Mongoose OS的GCP-Cloud IoT核心版查看天气
  3. h5画布动画_如何使用CCapture保存画布动画
  4. 如何修复 WordPress 中的 HTTP 错误
  5. mfc编写鼠标键盘_黑客为什么都不用鼠标?进来你就懂了!
  6. macOS下使用gcc编译GLUT+CPP的连接语句
  7. 20行Python代码检测人脸是否佩戴口罩
  8. Spark 入门系列-简介以及生态
  9. 《scikit-learn》随机森林之深入学习
  10. NLP《词汇表示方法(五)GloVe》