MySQL
文章平均质量分 75
该专栏围绕Mysql以图解Step by Step的方式介绍常用、实用的数据库管理操作。
ShenLiang2025
『沈亮』_聚焦数据科学领域的技术研究与实践,擅长数据库开发、ETL、数据仓库、大数据、数据分析、机器学习、基础数学等方向。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
用mysql Workbench查看执行计划
mysql Workbench查看图形化执行计划数据示例假定有部门表(dept)、员工表(emp),它们的表结构和数据见如下脚本:-- Mysql 版本DROP TABLE IF EXISTS emp; DROP TABLE IF EXISTS dept; create table dept( deptno int unsigned auto_increment COMMENT '部门编号', dname varchar(15) COMMENT '部门名称',原创 2021-11-02 10:24:45 · 2128 阅读 · 0 评论 -
Mysql Workbench导出数据库时报 Unknown table ‘column_statistics‘ in information_schema (1109)
workbench导出数据库报1109错的解决方法问题描述用mysqlWorkbench导出数据库时遇到Unknown table 'column_statistics' in information_schema (1109)错误,详见如下截图:问题分析该问题是由MySQL Workbench和Mysql数据库的版本不一致造成的。information_schema里的column_statistics视图是mysql 8之后才引进的。解决方法定义新命令新定义m...原创 2021-11-01 17:56:56 · 3005 阅读 · 0 评论 -
Mysql 死锁过程及案例详解之插入意向锁与自增锁备份锁日志锁Insert Intention Lock Auto-increment Lock Backup Lock Log Lock
Mysql 插入意向锁与自增锁备份锁日志锁插入意向锁Insert Intention Lock插入意向锁Insert intention locks是记录级别的,它通过“INSERT”关键词来向其它的事务传达插入的意向。插入意向锁针对的是将要插入的记录而不是已经存在的记录。下面我们通过例子来重现这个插入意向锁。示意案例--Step1 在会话1里对city表ID大于4079的记录进行更新操作。USE world;START TRANSACTION;SELECT * FROM c原创 2021-10-29 10:36:21 · 1044 阅读 · 0 评论 -
Mysql 死锁过程及案例详解之记录锁与间隔锁Record Lock Gap Lock
记录锁Record Lock与间隔锁GAP Lock记录锁Record Lock记录锁Record Locks又称为行锁,它同时包含索引和间隔锁。记录锁可以是共享锁也可能是排他锁。可以通过performance_schema.data_locks表的LOCK_TYPE和LOCK_MODEL来查看。示意案例-- Step1 开始事务,更新city的Population字段,这里更新时通过辅助索引里的字段CountryCode。START TRANSACTION;UPDATE cityS原创 2021-10-26 21:06:01 · 1114 阅读 · 0 评论 -
Mysql 死锁过程及案例详解之显式与隐式锁Explicit Table Lock Implicit Table Lock
显式锁Explicit Table Lock与隐式锁Explicit Table Lock显式锁Explicit Table Lock显式表锁(Explicit Table Locks)即通过命令lock tables对表进行锁定(共享或排他锁)、FLUSH TABLES WITH READ LOCK(共享锁),直到用显式的命令UNLOCK TABLES语句才能解锁。当FLUSH TABLES WITH READ LOCK不接表名时会触发metadata lock。示意案例-- 锁定e原创 2021-10-25 09:52:17 · 704 阅读 · 0 评论 -
Mysql 死锁过程及案例详解之元数据锁MetaData Lock
Mysql数据锁MetaData Lock元数据锁MetaData Lock元数据锁MetaData Locks的主要作用是在执行查询或者发起事务时元数据结构受到保护,即不被修改。MetaData Lock是表级锁。MetaData Lock是排他锁,当该锁存在时不能有其它的连接对表的模式进行修改。关于元数据锁的最大问题是空闲事务(因网络断开或者程序Bug而导致的COMMIT/ROLLBACK语句没有传给数据库,也没有释放线程而导致线上事务锁定等待严重、连接数暴涨的情况)会阻止DDL语句原创 2021-10-22 08:50:01 · 1271 阅读 · 0 评论 -
Mysql 死锁过程及案例详解之清空缓存锁Flush Lock
Mysql 清空缓存锁Flush Locks清空缓存锁Flush Locksflush table的功能是关闭所有打开的表,强制关闭所有正在使用的表,并刷新准备好的语句缓存。这种操作需要用户拥有FLUSH_TABLES、RELOAD权限。flush tables在已经锁定表(对应LOCK TABLES ... READ语句)的情况下不能使用,刷新和锁定表一般用FLUSH TABLEStbl_name... WITH READ LOCK语句。在我们需要做备份时为了同时防止有新数据写...原创 2021-10-18 11:48:48 · 940 阅读 · 0 评论 -
Mysql 死锁过程及案例详解之用户自定义锁
Mysql 用户自定义锁介绍锁简介当多个请求连接到数据库时,能保证同类查询执行时不相互冲突的机制即是锁。比如马路上的信号灯就是一个解决冲突的例子,在一定的时间内锁定了能通行的方向或者路线。MySQL里的锁实际上是一个处于处于授予或挂起状态锁请求。锁的访问级别锁的访问级别(Lock Access Levels)即定义锁以那种方式进入(使用)。主要有两种方式:共享的(shared)和排他的(exclusive)。共享锁是比较宽松的锁,即允许多个连接访问。而排他锁则只能指定一个连接访问的锁。有原创 2021-10-15 10:50:49 · 720 阅读 · 0 评论 -
Mysql 查询优化器之派生条件回移Derived Condition Pushdown详解
Mysql 优化器之派生条件回移Derived Condition Pushdown详解派生条件回移优化概述Mysql 8.0.22之后的版本支持派生条件回移(Derived Condition Pushdown)优化。该优化可以减少派生表处理的行数从而提高查询执行的效率。比方说有如下查询:SELECT * FROM (SELECT i, j FROM t1) AS dt WHERE i >constant通过派生条件回移优化后类似如下形式(WHERE条件拿到派生表的里面):.原创 2021-10-08 16:25:15 · 1128 阅读 · 0 评论 -
MySQL 优化器之Index merge Multi-Range Read MRR与Batched Key Access使用案例详解
MySQL 优化器之Index merge Multi-Range Read MRR与Batched Key Access介绍索引合并Index merge覆盖索引是在索引里即有查询时需要的字段,而在一个表上的查询往往条件会有多个组合且较为复杂,所以很难全部由覆盖索引包含到。那么此时我们就会用到索引合并(index merge)算法。该算法主要包含三类情况: 算法 应用场景 执行计划 Intersection .原创 2021-10-06 19:52:02 · 831 阅读 · 0 评论 -
Mysql 优化器内部JOIN算法hash join On-Disk Hash Join Grace Hash Join Hybrid hash join过程详解
Mysql 各种hash join算法讲解hash join的概述提到hash join之前自然得说Nest loop join,以两个表的关联为例,它其实是个双层循环,先遍历外层的表(n条),再拿每次对应的值去匹配、循环遍历内部的表(M条)。这样显然会有M*n的计算复杂度。如果能将外部表先装载到内存,然后再做内部表的匹配、遍历,计算的复杂度就会大大降低,这就是hash join的思想。本文继续介绍hash join的其它几个算法On-Disk Hash Join、Grace Hash Join原创 2021-09-27 16:15:24 · 1042 阅读 · 0 评论 -
Mysql 优化器内部JOIN算法hash join Nestloopjoin及classic hash join CHJ过程详解
Mysql hash join之classic hash join CHJ过程详解hash join的历史优化器里的hash join算法在SQL Server、Oracle、postgress等数据库早已实现,而Mysql在8.0.18之后才支持。在8.0.18之前mysql只支持嵌套循环关联(nested loop join),这其中最简单就是简易嵌套循环关联simple nestloop join,随后mysql做了改进进而支持block nestloop join, index nestlo原创 2021-09-26 22:04:04 · 1549 阅读 · 0 评论 -
Mysql utf8mb3 utf8mb4 与UTF8 字符集参数(character_set_system)的说明
Mysql UTF8之utf8mb3 utf8mb4字符集概述字符集即是为了兼容各国的文字而做的编码,比如GB2312、GBK等,通用的编码我们用utf8。mysql(5.7及8.0)里utf8实际是用3个字节存储即对应utf8mb3,而真正意义上的utf8对应的是4个字节存储即对应utf8mb4。utf8mb3和utf8mb4的比较: 比较内容 utf8mb3 utf8mb4 存储最大字节数 3原创 2021-09-22 15:21:46 · 20528 阅读 · 1 评论 -
Mysql生成连续时间段记录
需求说明基于某个起始日期值,比如‘2021-9-1’,生成其之后的30天数据,结果类似:2021-09-02、2021-09-03、2021-09-04...问题分析该需要看似简单,但想不借助交互式SQL即WHILE循环的方式,则得考虑借助自增辅助表来实现。自增辅助表的构造有几种方法,详见代码处的介绍:-- # Way1 借助系统表作为自增辅助SELECT DATE_FORMAT(DATE_SUB('2021-09-01', INTERVAL -pos DAY), '%Y-%m-%d原创 2021-09-18 09:32:40 · 934 阅读 · 0 评论 -
窗口分析函数19_Mysql查询窗口函数里第一个 最后一个 第N个元素的值的案例详解(FIRST_VALUE LAST_VALUE NVH_VALUE)
Mysql查询窗口函数之按序号取元素详解需求概述查询以课程(course)分区以分数(score)逆序的窗口里的第一个、最后一个和第2个元素对应的值。示例表数据见下:SELECT '数学' course, 40 score, '张三' name UNIONSELECT '数学' course, 60 score, '李四' name UNIONSELECT '数学' course, 70 score, '王二' name UNIONSELECT '数学' course, 55 s...原创 2021-09-14 17:50:06 · 639 阅读 · 0 评论 -
Mysql索引基本概念及案例总结(含索引的使用注意事项)
Mysql索引基本概念及案例总结Key与Index关键字索引是键的列表,当我们定义一个key(外键除外,一般是PRIMARY KEY或者KEY形式)时就会产生对应的索引。一般情况下KEY和INDEX关键字可以互换。唯一索引的说明唯一索引是只允许索引中每个值只能对应一行的索引。这里唯一分两层含义,在用户层对应唯一约束,即不能将重复的值插入定义为唯一的字段里,而对于数据库而言唯一性对应的是唯一索引检查字段的不重复性。特别的:对于字段允许为NULL的唯一索引,NULL可以多次插入进去,而不原创 2021-09-13 17:51:09 · 501 阅读 · 0 评论 -
Mysql数据唯一约束与唯一索引案例总结及踩坑记(含NULL值与唯一约束唯一索引的搭配使用)
Mysql数据唯一索引与唯一约束案例总结唯一约束的说明唯一约束是约束(CONSTRAINT)里的一种,常见的还有主键、外检、默认值、是否为空、检查等。唯一约束即限制某个或某些字段具有唯一性(不能重复)。唯一索引的说明唯一索引是只允许索引中的每个值对应记录的一行,这就像身份标识一样,每个人都只有一个。代码验证创建表时指定唯一约束CREATE TABLE tb_unique(id int,name varchar(20) UNIQUE,addr varchar(30),ag原创 2021-09-09 16:01:57 · 1250 阅读 · 0 评论 -
Mysql数据类型之字符串的案例介绍(含latin1下varchar的最大长度是65532还是65533)
数据类型概述Mysql里的数据类型主要有数值型(整形、浮点型)、时间类型、字符串类型、JSON类型、坐标类型、混合类型(整数或字符串)。本文主要介绍字符串和二进制类型的使用。字符串与二进制类型概述字符串是和二进制类型是比较灵活的可以存放任意数据的灵活类型。二进制类型和字符串的差别是字符串在存储时指定了字符集,即mysql能“读懂”这个字符串,而二级制则存的是裸的数据,需要特定或者专有的方法(程序)去解析。行容量限制因为mysql里每一个行的大小被限制在64k,所以varchar、...原创 2021-09-07 18:17:02 · 1707 阅读 · 0 评论 -
Mysql数据类型之浮点与二进制型数据使用案例总结
Mysql数据类型之浮点与二进制型数据数据类型概述Mysql里的数据类型主要有数值型(整形、浮点型)、时间类型、字符串类型、JSON类型、坐标类型、混合类型(整数或字符串)。数值型范围表格 数据类型 存储位数 数据范围 tinyint 1 Signed: -128–127 Unsigned: 0–255 smallint 2 .原创 2021-09-03 16:33:00 · 618 阅读 · 0 评论 -
Mysql数据类型之整数型的一些细节你get到了吗?
Mysql数据类型之整数型篇数据类型概述Mysql里的数据类型主要有数值型(整形、浮点型)、时间类型、字符串类型、JSON类型、坐标类型、混合类型(整数或字符串)。数值型范围表格 数据类型 存储位数 数据范围 tinyint 1 有符号: -128–127 无符号: 0–255 smallint 2 有符号: .原创 2021-09-03 13:32:25 · 606 阅读 · 0 评论 -
时间序列错位还原之SQL实现案例详解
SQL时间错位与还原生成案例需求描述1 原表T1某条记录(记做r1,相邻下一条为r2)的下一行记录的STARTDATE小于上一行ENDDATE,针对这样的记录做转换即:r1的STARTDATE保持不变,ENDDATE为r1的STARTDATE-1r2的STARTDATE为r1的ENDDATE,ENDDATE为r1的ENDDATE2 如果原表T1不存在相邻行“时间重叠”(即为1的定义)时保持原有数据不变。...原创 2021-06-17 14:58:56 · 948 阅读 · 9 评论 -
Mysql8 NDB集群二进制方式免安装配置图解
Mysql8 NDB集群二进制方式配置图解声明与简介本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。本文主要介绍mysql的NDB集群的配置及操作。注:1 当前的NDB SQL节点采用二进制的方式(免安装)安装在VVMware虚拟机内。 2 当前虚拟机内mysql运行在Linux的Centos 8内,版本号是 8.0.23、端口号3306。 3 host_128...原创 2021-05-13 19:35:10 · 558 阅读 · 0 评论 -
Mysql8 InnoDB Cluster Shell Router HA配置图解
Mysql8 InnoDB集群配置图解声明与简介本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。本文主要介绍mysql InnoDB Cluster(集群)的配置及操作。注: 1当前已经安装配置好单主MGR集群,详见Mysql 8 MGR集群单主配置图解、Mysql8 MGR集群操作图解 2 当前各节点内mysql版本是8.0.23,其中host_12...原创 2021-05-12 09:39:35 · 993 阅读 · 0 评论 -
Mysql8 group replication组复制集群单主多主模式切换
Mysql8 MGR集群操作图解声明与简介本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。本文主要介绍mysql的MGR集群的操作。MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供,实现了分布式下数据的最终一致性。其特点如下:高一致性:基于分布式paxos协议实现组复制,保证数据一致...原创 2021-05-10 15:13:33 · 618 阅读 · 0 评论 -
Mysql 8 group replication组复制集群单主配置图解
Mysql 8 MGR集群单主配置图解声明与简介本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。本文主要介绍mysql的MGR集群的配置。MySQL Group Replication(MGR)是MySQL官方在5.7.17版本引进的一个数据库高可用与高扩展的解决方案,以插件形式提供,实现了分布式下数据的最终一致性。其特点如下:高一致性:基于分布式paxos协议实现组复制,保证数...原创 2021-05-09 20:37:30 · 991 阅读 · 0 评论 -
Mysql 8主从复制配置图解
Mysql 8主从复制配置图解声明本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。本文主要介绍mysql的主从的配置。注:1 当前主服务器的操作系统是Win7、IP为192.168.0.100、数据库版本是Mysql 8.0.23、端口号3309。2 当前从服务器的操作系统是CentOS 8、IP为192.168.111.128、数据库版本是Mysql 8.0.23、端口号33...原创 2021-05-06 22:08:56 · 467 阅读 · 2 评论 -
Mysql 8二进制包多实例绿色解压安装Windows配置
Mysql 8解压配置图解声明本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。本文主要介绍windows下配置解压版(无安装)mysql。注:1 当前操作系统Win7、Mysql 8.0.23,win 10等其它windows系统类似。 2 当前系统内已安装了mariadb(mysql分支)其端口号为3306,当前mysql 8.0.23指定端口号为3309,服务名为...原创 2021-05-06 17:21:43 · 1129 阅读 · 0 评论 -
mysql备份工具Xtrabackup增量备份还原图解
Xtrabackup增量备份还原图解声明本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。XtraBackup是Percona提供的免费、在线、开源、完整的数据库备份解决方案,适用于所有版本的Percona Server for MySQL和MySQL。Percona XtraBackup在事务系统上执行在线非阻塞、紧致压缩、高度安全的完整备份。准备验证思路1 对当...原创 2021-04-29 16:55:48 · 761 阅读 · 0 评论 -
mysql 备份工具xtrabackup全备与还原图解
xtrabackup备份还原图解声明本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。XtraBackup是Percona提供的免费、在线、开源、完整的数据库备份解决方案,适用于所有版本的Percona Server for MySQL和MySQL。Percona XtraBackup在事务系统上执行在线非阻塞、紧致压缩、高度安全的完整备份。准备验证思路1 对当前数...原创 2021-04-29 10:41:48 · 656 阅读 · 0 评论 -
Mysql备份工具xtrabackup 8 安装图解
Mysql备份工具xtrabackup安装图解声明本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。当前操作系统CentOS 8、Mysql 8.0.23,使用的xtrabackup 版本号是8.0.23-16。下载工具Step 1:下载链接 https://www.percona.com/downloads/Percona-XtraBackup-LATEST/...原创 2021-04-27 15:08:04 · 1458 阅读 · 0 评论 -
一文带你了解mysql sql model的only_full_group_by模式含Error 1055问题分析
Mysql only_full_group_by及Error 1055问题分析图解声明本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。问题描述ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'tri...原创 2021-04-26 17:30:32 · 1028 阅读 · 0 评论 -
Mysqlbackup 8全备增量备份还原案例
Mysqlbackup 8增量备份还原图解声明本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。增量备份还原准备增量备份,又称为差异备份是基于某个全备而作的备份。它相对于全备份而言备份量较小,但备份和还原时必须依附这个全备。首先创建个表以验证增量(差异)备份,思路见下:在全备前建立一张表,并插入一条数据;然后做全备; 插入第二条数据,然后基于之前全备做增量(差异)...原创 2021-04-25 15:33:08 · 803 阅读 · 0 评论 -
Mysqlbackup备份还原初识
Mysqlbackup 8.0.23 备份还原图解Mysqlbackup简介mysqlbackup是mysql 企业版里的一个数据库备份还原工具。它是一个多平台,高性能的工具,提供丰富的功能,如热(在线)备份,增量和差异备份,选择性备份和恢复,支持直接的云存储备份,备份加密和压缩等注:当前验证环境CentOS 8 X86 64、mysql 8.0.23、mysqlbackup 8.0.23Mysqlbackup准备-- 创建用户...原创 2021-04-23 14:44:11 · 810 阅读 · 0 评论 -
Mysql 8 逻辑升级详解
Mysql 8 逻辑升级8.0.21升到8.0.23 升级准备核对系统环境操作系统环境:centOS 8 X86 64 数据库环境由mysql 8.0.21升级到mysql 8.0.23 当前数据库服务无复制、集群情况,仅单个数据库实例。下载新的版本当前是以rpm包的形式安装mysql,所以需要选择相应的包文件。Step 1 找到mysql的归档版本:Step 2 找到对应数据库和操作系统版本的rpm包(这里...原创 2021-04-22 18:12:48 · 771 阅读 · 0 评论 -
Mysql 8 密码策略之组件方式及ERROR 1819
Mysql 8 密码策略组件方式问题描述创建用户时提示密码不满足当前的策略定义,错误代码是[Err] 1819。Your password does not satisfy the current policy requirements解决方法首先查看当前的密码策略:-- 查看当前用户的密码策略SHOW VARIABLES LIKE 'validate_password%';由如上结果可见当前的密码策略级别是...原创 2021-04-21 14:09:04 · 790 阅读 · 0 评论 -
Mysql 8备份工具mysqlbackup下载安装图解
Mysqlbackup下载安装图解1 声明本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。2 Mysqlbackup简介mysqlbackup是mysql 企业版里的一个数据库备份还原工具。它是一个多平台,高性能的工具,提供丰富的功能,如热(在线)备份,增量和差异备份,选择性备份和恢复,支持直接的云存储备份,备份加密和压缩等注:当前实验版本,下载Win7,安装Cenos8...原创 2021-04-02 10:47:01 · 3691 阅读 · 4 评论 -
Mysql物理逻辑备份概述
Mysql物理逻辑备份概述1 声明本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。2 Mysql物理逻辑备份简介物理备份物理备份由存储数据库内容的目录和文件的原始副本组成,这种类型的备份适用于出现问题时需要快速恢复的大型、重要的数据库。逻辑备份逻辑备份保存表示为逻辑数据库结构(创建数据库、表的语句)和内容(插入语句或分隔文本文件)的信息。这种类型的备份适用于数据量较小...原创 2021-04-01 21:00:19 · 358 阅读 · 0 评论 -
Mysql数据目录初识
Mysql数据目录初识1 声明本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。2 数据目录简介存放Mysql管理信息的目录叫做(系统)数据目录。我们可以看到安装mysql时会有些特定的系统数据库,比如mysql、information_schema、sys等。3数据目录详解Mysql,该目录对应于mysql系统架构,包含mysql服务器运行时所需的信息。该...原创 2021-03-30 14:39:22 · 371 阅读 · 0 评论 -
CentoS8 Mysql8 数据目录迁移
Mysql数据库数据目录迁移1 声明本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理。2 数据目录迁移简介一般我们是通过rpm包的方式安装mysql,自己源码编译的较少。但这种方式安装数据库时默认的数据库数据存储目录在/var/lib/mysql或者其它类似的系统级目录。大多数情况下我们的系统盘因为各种原因分配的不够大,这时提前安排数据库的配额或者单独给数据库分配空间就...原创 2021-03-29 16:41:05 · 1368 阅读 · 0 评论 -
MariaDB架构图与执行流程概述
MariaDB架构图与执行流程概述1MariaDB执行流程以客户端访问MariaDB数据库服务器为例,它的执行流程见下:当一个客户端(应用程序、GUI工具)连接MariaDB时会产生一个基于该客户端主机名、用户名、密码的认证。该认证以插件的实用。 如果登录成功,客户端就可以给数据库发送SQL了。 解析器负责翻译传来的SQL字符串。 数据库检查客户端是否有对请求的操作有权限.(比如DML操作的DELETE某个表时)。 如果某个查询已经...原创 2021-03-12 09:39:12 · 801 阅读 · 0 评论
分享