windows安装mysql

进入mysql官网下载mysql-8.0.11-winx64.zip,在根目录新建my.ini配置,注意安装路径和存放路径

[mysqld]
# 设置mysql的安装目录
basedir=D:/software_test/mysql-8.0.11-winx64
# 设置mysql数据库的数据的存放目录
datadir=D:/software_test/mysql-8.0.11-winx64/data
# 设置默认使用的端口
port=3306
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人试图攻击数据库
max_connect_errors=10
# 服务端使用的字符集
character-set-server=utf8mb4
# 数据库字符集对应一些排序等规则使用的字符集
collation-server=utf8mb4_general_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件作为认证加密方式
# MySQL8.0默认认证加密方式为caching_sha2_password
default_authentication_plugin=mysql_native_password [mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4 [client]
default-character-set=utf8mb4
port=3306

加入环境变量D:\software_test\mysql-8.0.11-winx64\bin

根目录新建data文件夹,在bin目录进入cmd,初始化数据库无密码登录,这里会提示密码

~$ mysqld --initialize

安装启动服务

~$ mysqld --install
~$ net start mysql

进入MySQL并设置密码

~$ mysql -u root -p
~$ ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';

修改项目下settings.py

DATABASES= {

    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysite_db',
        'USER': 'zyc',
        'PASSWORD': 'zyc123456',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

创建库和用户

# 创建数据库
create database mysite_db default charset=utf8mb4 default collate utf8mb4_unicode_ci;
# 创建用户
create user zyc@localhost identified by zyc123456;
# 给库赋权
grant all privileges on mysite_db.* to 'zyc'@'localhost';
# 刷新权限
flush privileges;
# 查看有哪些数据库
Show databases;

账号密码都创建成功后,修改django--settings下的数据库账密

下载安装mysqlclient包,下载地址

~$ pip install mysqlclient-1.3.13-cp35-cp35m-win_amd64.whl

迁移和生成缓存表

# 迁移表
~$ python manage.py makemigrations
~$ python manage.py migrate
# 新建缓存表
~$ python manage.py createcachetable
# 运行django
~$ python manage.py runserver

先还原settings.py的DATABASES设置为sqlite,把数据导出到data.json中输入如下命令

~$ python manage.py dumpdata > data.json

再把DATABASES配置换成mysql并导入数据输入

~$ python manage.py loaddata data.json

导入数据会有数据重复的报错(could not load contenttypes),需先删除django_content_type表输入 delete from django_content_type ;连同关联表也先删除 delete from auth_permission ; 得到 Installed 317 object(s) from 1 fixture(s) 表示成功

windows下mysql数据同步至Linux

Linux下创建库和用户

# 登录数据库
~$ mysql -u root -p  show databases;
# 创建数据库
~$ CREATE DATABASE mysite_db DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_unicode_ci;
# 创建用户
~$ CREATE USER 'zyc'@'localhost' IDENTIFIED BY 'zyc123456';
# 用户赋权
~$ GRANT ALL PRIVILEGES ON mysite_db.* TO zyc@localhost;
# 刷新数据库
~$ FLUSH PRIVILEGES;

迁移数据

# 在本地导出数据:
~$ mysqldump -u zyc -p mysite_db > data.sql
# 传输文件:
进入dos命令下 
~$ scp data.sql root@公网ip:/home/data.sql
# 进入home目录导入数据
~$ mysql -u zyc -p mysite_db  --> source data.sql
# 注意修改setting文件数据库配置
ALLOWED_HOSTS = [*]
#运行项目
~$ python manage.py 0.0.0.0:80

问题记录

报错 2006 - MySQL server has gone away ,找到my.conf目录,增加如下

max_allowed_packet=500M允许的最大数据包
wait_timeout=288000等待的最长时间
interactive_timeout = 288000

保存后,重启mysql服务

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:http://zhangyanc.club/article/django-migrate/

许可协议:署名-非商业性使用 4.0 国际许可协议