MySQL

MySQL备份记录

MySQL备份记录

备份 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据 mysqldump -h localhost -uroot -p123456 database > dump.sql 导出单个数据表结构和数据 mysqldump -h localhost -uroot -p123456  database table > dump.sql 导出整个数据库结构(不包含数据) mysqldump -h localhost -uroot -p123456  -d database > dump.sql 导出单个数据表结构(不包含数据) mysqldump -h localhost -uroot -p123456

MySQL查询卡死、无返回结果问题解决

MySQL查询卡死、无返回结果问题解决

现象 ①在Navicat中,修改表结构,点击保存,然后发现Navicat卡住,无法正常退出,且MySQL无数据返回。 ②在任务管理器中强制关闭了Navicat后,重复在Navicat中尝试几次,结果仍然一样。 ③在MySQL CLI中进行select查询,同样卡住。 分析 起初认为是网络问题,但是想到可能是被堵塞住了。 解决 查询MySQL中的进程:show processlist。 打开正在进行中的进程列表,发现有Waiting for table metadata lock,所以初步判定是因为某个操作被堵塞,然后后续操作无法执行,从而引起了这个问题。 从网上的资料看来,可能的原因是有未提交事物,阻塞DDL,继而阻塞所有同表的后续操作;结合自己对此数据库的操作,初步认为是在自己的小项目里面,可能存在上述情况。 查看未提交的事务:select trx_state, trx_started, trx_mysql_thread_id, trx_query from information_

解决web端登录时等待过久并偶尔抛出事务相关异常

解决web端登录时等待过久并偶尔抛出事务相关异常

问题描述 分析 登录函数中有一个事务,如下: 事务里面有一个有可能操作比较耗时的过程: 在新增登录日志的时候,获取用户的ip。 具体干了啥不重要,重要的是发了一个http请求,并且是串行的,所以这个请求比较耗时的可能是很大的,并且具备不确定性因素。 反思 TransactionRollbackException的文档注释为: This exception indicates that the transaction associated with processing of the request has been rolled back, or marked to roll back. Thus the requested operation either could not be performed or was not performed because further

CentOS7中安装MySQL的详细过程以及配置

CentOS7中安装MySQL的详细过程以及配置

首先使用yum安装mariadb,它是MySQL的一个分支。 sudo yum install -y mariadb-server # 安装mariadb rpm -qa | grep mariadb # 查看mariadb已安装的相关包 要连上数据库,就得先启动它。所以先尝试下面的启动命令。 systemctl start mariadb.service #启动服务 systemctl enable mariadb.service #设置开机启动 systemctl restart mariadb.service #重新启动 systemctl stop mariadb.service #停止MariaDB 启动后,在命令行中输入mysql -u root -p,root密码默认为空,直接按回车即可。此时的密码为空,先设置一个密码,方法有多种,如下: 1.用root

MySQL中的常用关键字

MySQL中的常用关键字

很久不用MySQL,感觉又是一个新的玩意儿了,写起SQL语句来感觉好陌生,确实是很久了! distinct 查询出某个字段不重复的记录。可用distinct来返回不重复字段的条数count(distinct id)。 limit 记得这个可以用来做分页。它后面可以接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。 //初始记录行的偏移量是 0(而不是 1): mysql> SELECT * FROM table LIMIT 5,10; //检索记录行6-15 //为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1: mysql> SELECT * FROM table LIMIT 95,-1; // 检索记录行 96-last //如果只给定一个参数,它表示返回最大的记录行数目。换句话说,LIMIT n 等价于

MySQL中的日期操作

MySQL中的日期操作

获取当前时间 * now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2018-07-26 15:58:46 | +---------------------+ 1 row in set (0.00 sec) * sysdate() mysql> select sysdate() +---------------------+ | sysdate() | +---------------------+ | 2018-07-26 15:59:19 | +---------------------+ 1 row in set (0.00 sec) 两者之间的区别在于:sysdate()是实时获取的。 mysql> select now(), sleep(3), now(); +---------------------+----------+---------------------+ | now(