mysql group by_day06python数据库mysql之其他问题

1.MySQL 5.7.9版本sql_mode=only_full_group_by问题

用到GROUP BY 语句查询时报错:

924e0f2a947cdeadb5a7dd81d2927c24.png

解决方法 (修改全局配置):

# 执行命令set global sql_mode = '';# 如果执行set  session sql_mode = ''; 修改会话级别的,只是当前会话生效# 把sql_mode 改成非only_full_group_by模式。

验证是否生效 

SELECT @@GLOBAL.sql_mode # 或 SELECT @@sql_mode

ba06fd58fa52f6359d529ab125e3034f.png

46bfe9ba9c573fcd2f18f8caabefd09e.png

b2a115c2969d7040ff94e2e8591f024e.png

2.mysql老是停止运行该怎么解决

你可能还会遇到无法启动mysql的错误

4e56cc3650281d597d7ca9782cb9568b.png

解决方法如下:

d06f44a7fe01d51ce45a71e805adc8c5.png

3.mysql IDE工具介绍

生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具:Navicat for mysql

4.MySQL数据备份

物理备份:直接复制数据库文件,适用于大型数据库环境(如数据文件、控制文件、归档日志文件等)。但不能恢复到异构系统中如Windows。

逻辑备份:备份的是建表、建库、插入等操作所执行SQL语句,适用于中小型数据库,效率相对较低。

导出表:将表导入到文本文件中。

也可以用IDE工具来实现备份,点击转储SQL...,重点来研究MySQLdump实现的逻辑备份

使用mysqldump实现逻辑备份 

语法:mysqldump -h 服务器 -u用户名 -p密码 数据库名 > 备份文件.sql

当你是本地登录的时候这个-h可以不写,当其他用户登录时,就得写上-h 服务器

#示例:

1.单库备份mysqldump -uroot -p123456 day47 > E:\\day47.sqlmysqldump -uroot -p123456 test class employee department > E:\\test-c-e.sql2.多库备份mysqldump -uroot -p123456 --databases test db2 zuoye > E:\\dbzzz.sql3.备份所有库mysqldump -uroot -p123456 --all-databases > E://all.sql

恢复逻辑备份

方法1.在没有登录进去之前恢复C:\Users\Administrator>mysql -uroot -p123456 test < day47.sqldrop database day47;drop database test;create database day47;create database test;mysql -uroot -p123456 day47 < day47.sqlmysql -uroot -p123456 test < day47.sql  #也可以在自己新建的空数据库里添加你备份的库# 方法2.mysql登录进去后恢复mysql> use db1;mysql> SET SQL_LOG_BIN=0;  #设置日志,如果写日志就等于1,不写就等于0。一般不用设置mysql> source E:\\day47.sql;# 3.注:如果备份/恢复单个库时,可以修改sql文件DROP database if exists school;create database school;use school;

在没有登录之前恢复时,如果你想看恢复了没有的时候是不是每次都要登录进去看看啊,那么我们可以这样做,就不用登录直接查看了。不用再登录进去执行sql语句了

mysql -uroot -e "use test;show tables;" #注意是双引号mysql -uroot -e "show databases;" #注意分号在双引号里面

注意事项:

  • 完全恢复到一个干净的环境(例如新的数据库或删除原有的数据库)

  • 恢复期间所有SQL语句不应该记录到binlog中

  • 表的导出与导入

表的导出

use day47select * from userinfo;select * from userinfo into outfile 'E:\\userinfo.txt'  fields terminated by ',' lines terminated by '\n'; #将字段之间按逗号分开,行之间用'\n'分开
这样写的话报错了。新版本不支持你这样直接指定路径写,为了保证数据的安全。如果一旦有黑客拿到sql权限的时候,就把你的数据就给拿走了。你的数据就不安全了,那么怎么解决这个错误呢?

解决方法:

# 查看安全配置show variables like '%secure%';# 更改配置文件[mysqld]secure_file_priv='E:\\'

f226ed07b04cac5834bb320f495d335a.png

表的导入
use bak;show tables;create table user(id int primary key auto_increment,name char(20),age int,depart_id int);desc user;load data infile 'E:\\userinfo.txt' into table user fields terminated by ',' lines terminated by '\n';#导入表

646744c517a72d10c69eef6983251e5e.png

数据库迁移

# 务必保证在相同版本之间迁移mysqldump -h 源IP -uroot -p123 --databases db1 | mysql -h 目标IP -uroot -p456
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值