mysql
文章平均质量分 59
王哈哈er
廉颇老矣,能饭!
展开
-
mysql8利用CTE特性实现递归查询
递归查询分为父子查询和子父查询。父子查询:根据父 id 查询下面所有子节点数据;子父查询:根据子 id 查询上面所有父节点数据;下边就利用 mysql8 新增语法实现递归查询,表结构及数据如下图:父子查询:with recursive r as(select id,name from c where id=1union allselect c.id,CONCAT(r.name, '>', c.name) as name from c,r where r.id = c.Paren原创 2022-02-08 17:23:00 · 1053 阅读 · 0 评论 -
Waiting for table metadata lock问题处理
原文:Waiting for table metadata lock问题处理 - 膨胀的面包在使用 mysql 的时候,我们有时会碰到 Waiting for table metadata lock 的锁等待。但是这个锁等待比较特殊,在 innodb_lock_wait 和 show engine innodb status 表里面都查不到。该锁的影响还是用例子来展示一下吧,更加简单直观。IDUSERHOSTDBCOMMANDTIMESTATEINFO1event_转载 2021-07-27 15:09:13 · 727 阅读 · 0 评论 -
mysql数据库删除重复的数据只保留一条
问题引入假设一个场景,一张用户表,包含 3 个字段:id,identity_id,name。现在身份证号 identity_id 和姓名 name 有很多重复的数据,需要删除多余数据只保留一条有效数据。模拟环境1、登入 mysql 数据库,创建一个单独的测试数据库 mysql_exercisecreate database mysql_exercise charset utf8;2、创建用户表 userscreate table users( id int auto_increment p转载 2021-06-28 14:04:10 · 2001 阅读 · 2 评论 -
MySQL 正则替换数据:REGEXP_REPLACE 函数
MySQL 正则替换数据:REGEXP_REPLACE 函数MySQL 正则替换数据:REGEXP_REPLACE 函数 - 膨胀的面包https://blog.error.work/database/153.html用法注意:此函数为 MYSQL8.0 版本新增,低于 8.0 版本没有此函数REGEXP_REPLACE() 函数用于模式匹配。它通过匹配字符来替换给定的字符串字符。REGEXP_REPLACE(expr, pat, repl[, pos[, occurrence[, match_转载 2021-05-10 13:28:39 · 1264 阅读 · 1 评论 -
mysql8分组后随机取n条数据
今天接到一个需求,要求按照某几个字段分组,每个分组提取 10 条数据,百度了一下,大部分文章介绍的都是一下这种方法:select * from emp as a where 10> (select count(*) from emp where deptno = a.deptno and sal < a.sal ) order by a.deptno ,a.sal以上方法我没有测试出来,但是在继续搜索中得知,mysql8 之后可以使用 PARTITION BY 语法,所以换用以下方式成原创 2021-04-12 14:36:06 · 1332 阅读 · 0 评论 -
三种方式修改 MySQL 数据库名
原文:三种方式修改 MySQL 数据库名在 Innodb 数据库引擎下修改数据库名的方式与 MyISAM 引擎下修改数据库的方式完全不一样,如果是 MyISAM 可以直接去数据库目录中 mv 就可以,Innodb 如果用同样的方法修改会提示相关表不存在。第一种方法:rename database olddbname to newdbname这个是 5.1.7 到 5.1.23 版本可以用,但是官方不推荐,会有丢失数据的危险第二种方法:创建需要改成新名的数据库mysqldum 导出要改原创 2021-01-06 09:42:04 · 7048 阅读 · 2 评论 -
阿里巴巴 MySQL binlog 增量订阅 & 消费组件 Canal 实践
原文 -> 阿里巴巴 MySQL binlog 增量订阅 & 消费组件 Canal 实践https://blog.error.work/python/115.html背景最近有个需求,有多个库,每个库中有一张相同表名的表需要实时同步到另一个服务器上的 Mysql,本想自己 python 写一个脚本去处理,就这么巧,正好看到了阿里巴巴开源的 Canal,刚刚好他又满足需求,那就勉为其难试用一下叭[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vlKLXxgl转载 2020-11-18 14:43:21 · 1402 阅读 · 0 评论 -
MySQL 使用命令导出/导入数据
导出数据库文件常用命令1、导出多个表,包括表结构和数据mysqldump -u root -p databaseName tableName1 tableName2 > /home/foo.sqlmysqldump -u 用户名 -p 数据库名 数据表名1 数据表名2 > 导出的文件名和路径导出数据库中多张表的结构及数据时,表名用空格隔开2、导出整个数据库mysqldump...原创 2020-03-26 13:57:51 · 768 阅读 · 0 评论 -
Mysql 数据库导入导出比较快的方式
本文不再更新,最新版本查看:https://error.work/database/49.html1、备份原来数据库表结构,在新库中恢复表结构,必须跟原库一模一样,包括索引等。2、在新库中执行以下语句,删除新库的数据文件alter table 表名 discard tablespace;3、使用 scp 抽取原数据库中表的 ibd 文件到新库中scp -r 老数据库服务器用户名@老数据...原创 2019-12-06 11:05:35 · 1815 阅读 · 0 评论 -
mysql 临时表空间,ibtmp1 表空间暴增解决办法
本文不再维护,最新版本:https://error.work/database/45.html接到了一台 MySQL5.7 服务器磁盘空间不足的报警,该业务的数据量 20G 的样子,是什么造成磁盘空间不足呢?经过排查后发现,数据目录下面有一个 ibtmp1 的文件特别大,有 949G 。ibtmp1 是个什么东西呢?查看官方文档后发现这是非压缩的 innodb 临时表的独立表空间。通过 in...转载 2019-11-20 09:37:33 · 1667 阅读 · 0 评论 -
mysql binlog日志自动清理及手动删除
转载:https://blog.csdn.net/atco/article/details/24259333说明:当开启mysql数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间。mysql-bin.000001mysql-bin.000002mysql-bin.000003mysql-bin.000004mysql-bin.0000...转载 2019-10-23 09:44:53 · 870 阅读 · 0 评论 -
有关 mysql 的 innodb_flush_log_at_trx_commit 和 sync_binlog 参数
本文不再维护,原文:https://error.work/content/11/一、innodb_flush_log_at_trx_commit参数解释0:log buffer 将每秒一次地写入 log file 中,并且 log file 的 flush (刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作。1:每次事务提交时 MySQL 都会把 log b...原创 2019-04-25 14:36:56 · 979 阅读 · 0 评论 -
Windows 系统安装 mysql 以及错误解决方案
在 Windows 中安装 mysql 不够幸运的话,会遇到相当多的坑,当然这也算是一种财富吧,让自己碰到问题去查找解决方案。有时候不是一时半会就可以解决的。有同学说过安装 mysql 安装两天还没有装上。不用担心,我安装 mysql 用了一天吧,下面记录下来安装过程及可能遇到的问题。工欲善其事,必先利其器!我们到官网上下载所需要的版本。官网:https://dev.mysql.com/dow...原创 2019-03-28 13:37:28 · 713 阅读 · 0 评论 -
mysql 直接拷贝 data 目录下文件还原数据
背景:MySQL的的崩溃无法启动,决定重新搭环境,但数据库测试数据忘记备份时,MySQL的的数据目录幸存操作:1,复制测试数据库的文件夹(包含 .frm .ibd 等文件)2,重启 mysql,通过 Navicat 查看数据库某张表,结果显示“表’xxx 不存在 ”3,各种谷歌,百度后发现 innodb 的表,直接复制文件是无法使用的,会提示表不存在,在复制的时候,应将数据目录下的 i...转载 2019-03-28 13:26:59 · 2485 阅读 · 0 评论 -
Xtrabackup 安装以及 mysql 使用 Xtrabackup 物理备份过程记录
一、环境:Linux:CentOS Linux release 7.5.1804 (Core)Mysql:5.7.20Xtrabackup:2.4.9linux查看版本当前操作系统发行信息 cat /etc/issue 或 cat /etc/centos-release二、介绍Xtrabackup 是一个对 InnoDB 做数据备份的工具,支持在线热备份(备份时不影响数据读写),是...原创 2019-03-28 10:37:28 · 899 阅读 · 0 评论 -
mongodb/mysql 查看数据库占用磁盘空间大小
一、mongodb1、查看整个数据库默认是bytes单位db.stats();返回:{ "db" : "xxx", //当前数据库 "collections" : 27, //当前数据库多少表 "objects" : 18738550, //当前数据库所有表多少条数据 "avgObjSize" : 1153.54876188392, //每条数...原创 2019-03-12 13:16:53 · 9260 阅读 · 1 评论 -
Mysql 强制使用索引 force index,提高sql查询效率
一、背景之前写过一篇文章《oracle强制走索引,提高sql查询效率》:https://blog.csdn.net/weixin_41287692/article/details/79350991由于现在使用 mysql 多一些,所以搜索了一下 mysql 是否也有类似的强制使用索引二、使用方法语法force index(强制要走的那个索引)示例强制使用索引前SELECT *...转载 2019-01-21 13:52:28 · 16982 阅读 · 0 评论 -
Mac安装Nginx+MySQL+PHP
OS X自带Apache和PHP,这里讲的是使用Nginx服务器。以下为详细步骤:1. 安装brewbrew是OS X上一个优秀的命令行包管理工具,用它来安装一系列软件非常方便。/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"2. 安装MySQL首先我...转载 2018-03-10 16:05:51 · 830 阅读 · 0 评论 -
多个字段的in 和 not in 及其替代写法(exists,not exists)
【转载】先说基本情况:数据库:DB2 8.2,SQL Server 2005 Express表a 有字段:aaa,bbb,还可能有其他字段。记录条数:3764表b 有字段:aaa,bbb,还可能有其他字段。记录条数:4127就是表a的字段aaa跟表b的字段aaa有对应关系,表a字段的bbb跟表b的字段bbb有对应关系。要求只有aaa,bbb两个字段都同时对应上了才算是真的对应上了。(也不知道我...转载 2018-04-23 14:02:27 · 10698 阅读 · 0 评论 -
sql 查询表共多少列(oracle,mysql,sqlserver)
1、oracle:select count(*) from user_tab_cols where table_name='表名';--表名含英文的话应为英文大写字母结果如图:2、mysql:select count(*) from information_schema.COLUMNS where table_name='表名';--表名大小写均可结果如图:3、sqlserver:select c...转载 2018-06-06 14:07:06 · 7810 阅读 · 0 评论 -
重新装Mysql后原来数据的恢复办法
重新装Mysql后原来数据的恢复办法不管是重新装系统或者数据库时,总会遇到怎么样恢复原来的数据,我知道有两种方法:1、先将数据导出来,装好数据库后,再导进去,但是这样太耗费时间。2、我所推荐的便是第二种方法:在卸载数据库或重新装系统的时候要保证自己的数据库文件还存在,重点是data文件夹(该文件夹一般在mysql安装目录下)然后安装mysql,安装完成后,关闭mysql服务,去找...转载 2018-08-29 16:42:14 · 5489 阅读 · 1 评论 -
各个平台的mysql重启命令
linux平台及windows平台mysql重启方法: 一、Linux下重启MySQL的正确方法: 1、通过rpm包安装的MySQLservice mysqld restart 2、从源码包安装的MySQL // linux关闭MySQL的命令 $mysql_dir/bin/mysqladmin -uroot -p shutdown // linux启...转载 2018-08-29 17:06:48 · 664 阅读 · 0 评论 -
mysql 错误 [Err] 1260 - Row * was cut by GROUP_CONCAT()
最近在用MySQL做一些数据处理,会用到group_concat函数,比如类似下面一条语句:select aid,group_concat(bid) from tbl group by aid limit 1;sql语句比较简单,按照aid分组,并且把相应的bid用逗号串起来。这样的句子大家可能都用过,也可能不会出问题,但是如果bid非常多的话,你就要小心了,比如下面的报错:[Er...转载 2018-09-26 09:41:57 · 16998 阅读 · 1 评论 -
解决 mysql 报错: Error Code: 1786 Statement violates GTID consistency: CREATE TABLE ... SELECT.
1、背景mysql 建表使用 create table as 报错 [Err] 1786 - Statement violates GTID consistency: CREATE TABLE ... SELECT. 2、错误原因这是因为在5.6及以上的版本内,开启了 enforce_gtid_consistency=true 功能导致的,MySQL官方解释说当启用 enforce...转载 2018-10-12 16:09:18 · 11370 阅读 · 0 评论 -
Python 使用 PyMysql、DBUtils 创建连接池,提升性能
个人 Python 学习记录Python 使用 PyMysql连接数据库,DBUtils 连接池使用简单例子Python 编程中可以使用 PyMysql 进行数据库的连接及诸如查询/插入/更新等操作,但是每次连接 MySQL 数据库请求时,都是独立的去请求访问,相当浪费资源,而且访问数量达到一定数量时,对 mysql 的性能会产生较大的影响。因此,实际使用中,通常会使用数据库的连接池技术,来访...原创 2018-10-26 13:47:11 · 9272 阅读 · 0 评论 -
使用 SSCursor (流式游标) 解决 Python 使用 pymysql 查询大量数据导致内存使用过高的问题
Python 导数据的时候,需要在一个大表上读取很大的结果集。如果用传统的 fetchall() 或 fetchone() 方法,都是先默认在内存里缓存下所有行然后再处理,大量的数据会导致内存资源消耗光,内存容易溢出。解决的方法:使用 SSCursor (流式游标),避免客户端占用大量内存。(这个 cursor 实际上没有缓存下来任何数据,它不会读取所有所有到内存中,它的做法是从储存块中读...原创 2018-10-30 17:41:58 · 12701 阅读 · 1 评论 -
oracle、mysql、postgresql 对 varchar 类型的数字排序不准解决办法
如果字段的类型为 varchar 型,但是里面存储的是纯数字,怎么实现按照数字的大小来排序?直接 order by 某些情况下会排序不准确:下面的方法对于mysql和oracle都适用:order by 字段+0order by 字段*1等等都可以实现例:...原创 2018-11-09 13:12:37 · 3219 阅读 · 0 评论 -
mysql 已有大数据量表进行分区踩坑
一、背景mysql 表中已有 4 亿数据,为提高查询效率,需创建分区,一开始计划是创建 HASH 分区,结果报错:ERROR 1659 (HY000): Field 'partno' is of a not allowed type for this type of partitioning查询得知报错原因,HASH 分区只支持数字分区,而我要分区的字段是 varchar 类型,故改用 ...原创 2018-11-02 10:56:54 · 10865 阅读 · 2 评论 -
Mysql 中给查询结果添加序号列,类似 oracle 中的 rownum
Mysql 中给查询结果添加序号列,类似 oracle 中的 rownumselect (@i:=@i+1)pm,s.* from stuscore s,(select @i:=0) t思路:事先定义一个变量,通过变量的递加以及虚拟表的联查达到生成序列号的目的。select * from table1,table2 不加任何条件时,是把两个表的数据笛卡尔积之后显示,如上 sql 中的 ...转载 2018-11-16 10:16:57 · 1120 阅读 · 0 评论 -
CentOS 下 MySQL 忘记 root 密码解决方法
1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接 MySQL 数据库。因为在重新设置 MySQL 的 root 密码的期间,MySQL 数据库完全出于没有密码保护的状态下,其他的用户也可以任意地登录和修改 MySQL 的信息。可以采用将 MySQL 对外的端口封闭,并且停止 Apache 以及所有的用户进程的方法实现服务器的准安全状态。最安全的状态是到服务器的 Console ...转载 2018-11-27 15:08:09 · 643 阅读 · 0 评论 -
linux Centos 安装 mysql 教程
linux 安装 mysql 记录上传 mysql 安装包到 /usr/local 下创建 mysql 用户useradd mysql修改mysql密码passwd mysql解压安装包tar -zxvf mysql-5.7.18-linux-glibc2.5-x86_64.tar.gzmv mysql-5.7.18-linux-glibc2.5-x86_64 m...原创 2019-01-03 17:23:07 · 713 阅读 · 0 评论 -
mysql 日志文件mysql-bin文件清除方法,和mysql-bin相关文件的配置
遇到一个问题:安装wordpress短时间内linux服务器磁盘被占满登陆服务器,使用 find -type f -size +100M -print0 | xargs -0 du -h | sort -nr 查询得知是mysql-bin文件占用了大量空间这些文件都是mysql的日志文件,如果不做主从复制的话,基本上是没用的默认情况下mysql会一直保留mysql-bin文件,这样到一定时候,磁...转载 2018-03-09 19:02:40 · 5324 阅读 · 0 评论