MySQL
在奋斗的大道
程序发烧友
展开
-
SpringBoot 事务失效及其对应解决办法
本文主要讲述Spring事务会去什么情况下失效及其解决办法Spring 通过AOP 进行事务控制,如果操作数据库报异常,则会进行回滚;如果没有报异常则会提交事务;但是,如果Spring 事务失效,会导致数据缺失/重复等异常问题。原创 2024-02-29 18:40:14 · 1875 阅读 · 5 评论 -
MySQL 存储过程批量插入总结
目标: 主要解决模拟数据的质量问题,主要体现在:姓名、电话号码、邮箱、公司名称、家庭\公司住址、字段限定取值范围(涉及字符串和整形)、金额、 时间、系统主键和默认值等相关问题。我在自己的座位上正在正常执行向核心业务表的注入数据的存储过程,产品经理火急火燎的跑过来通知我,批量注入的数据质量必须考虑。:今天接到产品经理核心业务表的数据压测功能,让我向核心业务表插入百万级的业务量数据,我首先想到的办法就是。由于无法提供核心业务表,本文仅仅提供我刚刚自己创建的表bds_base_user 表做相关功能展示。原创 2024-02-28 14:53:57 · 1045 阅读 · 0 评论 -
MySQL 8 数据清洗总结
上述库表的关系:1:N = 项目 :案卷。原创 2023-08-31 09:20:28 · 1084 阅读 · 0 评论 -
DBeaver一次性执行mysql多条sql
最新开始弃用Navicat,改用dbeaver,DBeaver需要Java语言支持,所以安装之前需要配置JDK环境;原创 2023-04-03 11:21:47 · 5344 阅读 · 0 评论 -
MySQL 8 锁表问题排查总结
如果需要过滤用户/db/commond 等相关信息,也可以使用information_schema.processlist 表信息。Table_locks_waited: 指的是不能立即获取表级锁而需要等待的次数,如果数量大,说明锁等待多,有锁争用情况。温馨提示: debug会将状态信息生成到mysql的错误文件,一般锁的信息都会保存在最后几行。Table_locks_immediate: 指的是能够立即获得表级锁的次数。也可以通过mysqladmin 指令打印processlist 进程信息。原创 2023-03-10 16:57:24 · 3515 阅读 · 0 评论 -
MySQL 搞定行转列,列转行
1、使用case…when…then2、使用SUM(IF()) 生成列3、使用SUM(IF()) 生成列 + WITH ROLLUP 生成汇总行4、使用SUM(IF()) 生成列 + UNION 生成汇总行,并利用 IFNULL将汇总行标题显示为 Total5、使用SUM(IF()) 生成列,直接生成汇总结果,不再利用子查询。原创 2023-03-10 15:39:16 · 1045 阅读 · 1 评论 -
MySQL 配置文件详解my.cnf
MySQL 配置文件my.cnf原创 2023-03-09 15:43:15 · 343 阅读 · 0 评论 -
MySQL 8 清理重复数据
昨天晚上,公司项目进行版本升级从2.0 升级3.0 版本,技术架构也由SpringBoot2.x +Dubbo 升级为Spring Cloud Alibaba + Nacos + Fegin 模式。基于tid \ptid\project_no 字段进行分组,统计记录数大于1,满足条件的记录取id 最小值。base_project 表:通过tid \ptid\project_no 三个字段可以确定唯一记录。今天刚刚到公司,就收到测试部门的反馈,昨天迁移数转的项目数据存在重复的情况,需要我立即处理。原创 2023-03-09 15:20:03 · 411 阅读 · 0 评论 -
MySQL 百万级/千万级 建立索引
现状:合同表的数据已经到达千万级,如果直接在biz_contract(合同表)创建索引,索引构建时间缓慢,也无法预估全表建完优化索引时间是多少。清空/删除biz_contract(合同表),将biz_contract_temp(合同临时表) 重命名。将biz_contract(合同表)迁移导入至biz_contract_temp(合同临时表)基于biz_contract(合同表)创建biz_contract_temp(合同临时表)在biz_contract_temp(合同临时表)创建优化索引。原创 2023-02-22 15:08:44 · 757 阅读 · 0 评论 -
MySQL 提示:MySql Specified key was too long; max key length is **** bytes
今天在迁移生产环境测试库:房屋信息表(Base_House)当执行到数据库中的`t_p_fwbm_union`索引创建的时候,遇到了“”这样的报错。原创 2022-12-16 10:10:44 · 446 阅读 · 0 评论 -
MySQL 自定义函数一文读懂
含义:一组预先编译好的的集合,理解成批处理语句1、提高代码的重用性2、简化操作3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率。:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新。:有且仅有1 个返回,适合做处理数据后返回一个结果。原创 2022-12-12 19:34:50 · 3113 阅读 · 0 评论 -
MySQL创建自定义函数提示:This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its ......
MySQL开启了bin-log, 我们就必须指定我们的函数是否是1、DETERMINISTIC 不确定的2、NO SQL 没有SQl语句,当然也不会修改数据3、READS SQL DATA 只是读取数据,当然也不会修改数据4、MODIFIES SQL DATA 要修改数据5、CONTAINS SQL 包含了SQL语句温馨提示:在自定义Function里面,只有 DETERMINISTIC, NO SQL 和 READS SQL DATA 被支持。原创 2022-12-09 16:05:18 · 2592 阅读 · 1 评论 -
MySQL 百万级/千万级表 总记录数查询
基于 InnoDB 存储引擎的表,在数据量达到百万级之后,用 count 函数查询表记录总数会变得很慢,会导致服务请求超时。针对这种情况总结下我所想到的解决办法。针对百万级及其以上的表数据记录总数通过MySQL数据管理系统自带库表,查询指定schema和table_name的记录总数。前提条件:表主键id 必须使用自增长,且必须确保表中数据几乎没有跳id、删数据的情况下,直接用最大id,减最小id。温馨提示:这里是个预估值,但与实际表记录总数非存在差别,由于MySQL数据管理系统需要定时更新表的记录总数。原创 2022-11-15 09:36:37 · 5770 阅读 · 5 评论 -
MySQL 支持索引类型和DDL语句
4、为base_house 表中省(province)\市(city)\区县(county)\地址(address) 添加组合索引。2、为base_house 表中房屋编号fwbh 添加唯一索引。3、为base_house 表中房屋介绍fwjs 添加全文索引。5、文base_house 表中联系人(lxr) 添加普通索引。1.为base_house 表主键sid 添加主键索引。原创 2022-11-11 15:21:06 · 610 阅读 · 0 评论 -
MySQL 百万级/千万级表 全量更新
第三种方案针对第二种方案对于寻找起始行位置通过索引进行了优化,批量更新的时间也有明细的提示,达到单台服务器每分钟处理5000条记录数据。实战:执行batch_update_middle_house 存储过程,base_house 全表4201183 记录数在1小时10分钟内全部清洗完毕。第一步:设计房屋清洗中间表:base_middle_house,设计两个字段(id 主键 自增长、house_id 房屋关联主键,唯一主键)功能说明: batch_update_house 房屋全量更新存储过程。原创 2022-11-10 20:30:06 · 9312 阅读 · 0 评论 -
MySQL8 一文读懂存储过程
2、变量及其赋值变量主要分为三大类:局部变量、用户变量和系统变量。局部变量特效:用户自定义,在begin/end块中有效。局部变量语法:declare 局部变量名称 局部变量数据类型 default 默认值;局部变量定义实例:局部变量Set赋值局部变量set 赋值语法:set 局部变量名 = 值;局部变量set 赋值实例:局部变量Into赋值局部变量into 赋值语法:into 局部变量名局部变量into 赋值实例:用户变量用户变量特性:用户变量语法: @用户变量名用户变原创 2022-09-30 15:25:03 · 1618 阅读 · 0 评论 -
MySQL8 创建主键ID
痛点:2.0 系统对应的业务表主键都是字符串,不是int 类型无法使用MYSQL的主键自增长设置。任务目标:将1.0 系统的数据转换为 2.0 系统对应表中的数据(简称:数转)。任务实现:通过MySQL的存储过程,实现相关表数据的转换。解决办法:通过MySQL 自带的UUID 函数实现。温馨提示:记得替换’-‘符号。原创 2022-09-30 09:22:40 · 787 阅读 · 0 评论 -
MySQL8 设置自动创建时间和自动更新时间
MODIFY COLUMN 字段名 timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间';2、为每张业务表的create_time 和update_time 字段,设置默认值:CURRENT_TIMESTAMP。实例:修改User 表中的update_time设置默认时间 CURRENT_TIMESTAMP。ALTER TABLE 表名。ALTER TABLE 表名。原创 2022-09-14 09:48:14 · 4067 阅读 · 0 评论 -
Docker之MySQL主从连接提示:Communications link failure
今天在使用Apache ShardingSphere实现数据库读写分离功能,连接基于Docker的MySQL5.7 主从IP。SpringBoot程序提示如下错误信息:错误的原因:MySQL服务在长时间不连接之后断开了,断开之后的首次请求会抛出这个异常原因分析:1、既然是长时间不连接之后断开了,那这个时间应该是可以设定的,或者现在mysql用的还是默认的值2、如何查看现在的时间值,以及如何修改基于docker服务启动的MySQL。查看默认值:1、使用Native For MySQL客户端工具,执行如下指令:原创 2022-06-20 13:36:00 · 2121 阅读 · 0 评论 -
NativeForMySQL 连接MySQL8 提示:1251- Client does not support authentication protocol
今天在Windows11 系统中安装了MySQL8 数据库,使用NativeForMySQL 连接MySQL8 数据库提示如下错误信息:1251- Client does not support authentication protocol网上说出现这种情况的原因是:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,解决办法:方法1.升级navicat驱动;方法2.把mysql用原创 2022-04-20 14:44:55 · 861 阅读 · 0 评论 -
Windows11 安装MySQL服务 提示:Install/Remove of the Service Denied
今天在Windows 11 系统中安装MySQL8 数据库时,安装MySQL8 服务提示如下错误信息:错误原因:安装/删除服务被拒绝! 说明权限不够,无法进行操作解决办法:以管理员身份运行cmd.exe文件PS C:\Users\zzg> mysqld --install MySQLService successfully installed.PS C:\Users\zzg> net start MySQLMySQL 服务正在启动 .MySQL 服务已经启原创 2022-04-20 14:25:17 · 2042 阅读 · 0 评论 -
MySQL8 mysqldump参数说明
(1)mysqldump字符集设置 mysqldump -uusername -ppassword --default-character-set=gb2312 db1 table1 > tb1.sql mysqldump客户端可用来转储数据库或搜集数据库进行备份或将数据转移到另一个sql服务器(不一定是一个mysql服务器)。转储包含创建表和/或装载表的sql语句。如果在服务器上进行备份,并且表均为myisam表,应考虑使用mysqlhotcopy,因为可以更快地进行备...原创 2022-03-06 17:36:13 · 2343 阅读 · 0 评论 -
MySQL8之mysqldump常用指令详解
导出所有数据库:#语法mysqldump -u用户-p密码 --all-databases >输出文件地址#实战mysqldump -uroot -proot --all-databases >/tmp/all.sql导出指定db1、db2两个数据库的所有数据#语法mysqldump -u用户 -p密码 --databases 指定数据库1 指定数据库2 >SQL文件输出地址#实战mysqldump -uroot -proot --databases db1转载 2022-03-06 17:23:30 · 3043 阅读 · 0 评论 -
Windows系统安装绿色版MySQL8
下载mysql:MySQL官方网站下载最新的MySQL Community Server版本:https://dev.mysql.com/downloads/mysql/我这里演示的MySQL版本为mysql-8.0.15-winx64,CSDN下载地址:解压安装: 解压到你想要指定的安装目录,我这里为D:\mysql8\mysql-8.0.15-winx64配置环境变量:将mysql下的bin目录配置环境变量,即为D:\mysql8\mysql-8.0.15-winx64\bin...原创 2022-03-05 15:38:15 · 1003 阅读 · 0 评论 -
MyBatis3 连接MySQL8 提示:message from server: “Host ‘xxx‘ is not allowed to connect to this MySQL server
今天在一台云服务器上部署应用,提示如下错误信息:message from server: "Host 'xxx' is not allowed to connect to this MySQL server造成上述的错误的原因:数据库连接的账户不允许从远程登陆,只允许使用localhost连接。解决办法:1、修改mysql数据库中的"user" 表里的 "host" 字段,从"localhost"改称"%"实列:update user set host = '%' whe.原创 2022-03-05 12:51:45 · 633 阅读 · 0 评论 -
达梦(DM8)数据库支持数据类型总结
一、数值类型NUMERIC[精度,标度]:用于存储零、正负定点数。精度范围1至38 NUMBER类型:跟NUMERIC相同 DECIMAL/DEC类型:跟NUMERIC相似 BIT类型:用于存储整数数据1、0或null INTEGER/INT类型:用于存储有符号整数,精度为10 PLS_INTEGER类型:与INTEGER相同 BIGINT类型:用于存储有符号整数,精度为19,标度为0 TINYINT类型:用于存储有符号整数,精度为3,标度为0。取值范围为:-128~+127。 BYTE原创 2021-10-08 19:10:02 · 13909 阅读 · 3 评论 -
达梦数据库锁超时的解决办法
1、锁超时的报错2、解决办法select * from v$lock(查询数据库表的锁的情况)select * from sysobjects(查询对象信息)select * from v$sessions(查询会话信息)将3条语句组合一下就能查出哪张表上的某种锁是由哪个会话操作加上的。select a.*,b.NAME,c.SESS_ID from v$lock aleft join sysobjects b on b.ID=a.TABLE_IDleft join v$.转载 2021-09-10 11:43:14 · 11144 阅读 · 1 评论 -
MySQL8 迁移DM8提示:The server time zone value ‘Öйú±ê׼ʱ¼ä‘ is unrecognized or represents .....
问题描述:今天使用DM8数据库迁移工具,选择出库源(MySQL8)编辑URL点击下一步提示如下相关错误信息:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents .....解决办法:指定URL追加区时:serverTimezone=GMT%2B8...原创 2021-09-09 10:46:39 · 254 阅读 · 0 评论 -
MySQL8子查询提示:This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME subquery
报错SQL:select ucas_individual_proj.individual_proj_name from ucas_individual_proj where ucas_individual_proj.sid in( select ucas_file_info.individual_proj_sid from ucas_file_info where ucas_file_info.individual_proj_sid is not null and ucas_file_info.pd原创 2021-06-29 18:23:11 · 396 阅读 · 0 评论 -
Navicat for MySQL 还原MySQL8 备份文件提示:1153 - Got a packet bigger than ‘max_allowed_packet‘ bytes
问题描述: 使用Navicat for MySQL 还原MySQL8 备份文件提示:1153 - Got a packet bigger than ‘max_allowed_packet‘ bytes造成原因:备份文件过大,超出MySQL服务器设置可接收包最大值(max_allowed_packet)解决办法: 切换至MySQL安装目录中找到my.ini文件右键用记事本打开,先搜索文件中有没有max_allowed_packet。...原创 2021-06-24 17:26:52 · 347 阅读 · 0 评论 -
Navicat For Mysql 数据库备份与还原
一.首先设置, 备份保存路径工具 -> 选项 点开其他 -> 日志文件保存路径二. 开始备份备份分两种, 一种是以sql保存, 一种是保存为备份1.SQL保存右键点击你要备份的数据库, -> 转储SQL文件选择位置和文件名点击保存,开始转储 导入建议 删除所有表 或 重新建数据库 右键数据库 运行 SQL文件2.Navicat 备份点击开始...转载 2021-06-24 17:10:50 · 3241 阅读 · 0 评论 -
MySQL8 大表清空和删除正确方法
1 清空大表1.1 清空方式之truncate删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作。TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。truncate 清空表数据,2.7G的表大概需要10秒以上;truncate table ucas_file_info;1.2 清空方式之rena原创 2021-06-24 16:48:08 · 1880 阅读 · 1 评论 -
MySQL8 查看数据存放的路径地址
问题描述:我们在MySQL8的安装目录中没有找到data(数据库存放的地方)的文件夹,我们需要找到数据库文件data的存放路径地址。解决办法: 在Native for MySQL 的Query 查询窗口,输入如下指令:show variables like '%datadir%';效果截图:...原创 2021-06-24 16:13:27 · 2697 阅读 · 0 评论 -
MySQL 8 查看正在执行操作服务
MySQL查询正在执行操作服务指令:show processlist列字段含义及其用途 :第一列 id,不用说了吧,一个标识,你要kill一个语句的时候很有用。第二列 user列,显示单前用户,如果不是root,这个命令就只显示你权限范围内的sql语句。第三列 host列,显示这个语句是从哪个ip的哪个端口上发出的。可以用来追踪出问题语句的用户。第四列 db列,显示这个进程目前连接的是哪个数据库。第五列 command列,显示当前连接的执行的命令,一般就是休眠(sleep),查原创 2021-06-24 16:05:37 · 513 阅读 · 0 评论 -
MySQL 8 添加用户和授权(不受限版本)
第一步:用户添加:CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';原创 2021-06-21 10:33:26 · 1786 阅读 · 0 评论 -
Native for MySQL 连接MySQL 提示is blocked because of many connection errors; unblock with mysqladmin **
问题描述:本机安装MyCAT 服务,使用Native for MySQL 进行连接时提示如下截图的错误信息zao原创 2021-06-21 10:07:15 · 227 阅读 · 0 评论 -
Native for MySQL 客户端连接MySQL8 提示10061错误解决方案
今天使用MyCat 连接MySQL8 服务提示:10061解决办法:在[mysqld]这一中添加上这一行:bind-address = 0.0.0.0(有的mysql版本是bind-address = 127.0.0.1直接修改为bind-address = 0.0.0.0)原创 2021-06-18 17:49:11 · 539 阅读 · 0 评论 -
Windows10 实现MySQL8 自动备份
1、编写MySQL8 自动导出*.bat*.bat脚本内容如下:@echo off set "Ymd=%date:~,4%%date:~5,2%%date:~8,2%" "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqldump" -uroot -p123456 test_db> C:\db_backup\test_db\db_%Y-m-d%.sql @echo on 2、MySQL8 自动导出*.bat 指令详解脚转载 2021-05-19 17:18:04 · 929 阅读 · 0 评论 -
MySQL 之Alter Add 命令总结
alter add命令用来增加表的字段。alter add命令格式:alter table 表名 add 字段 类型 其他;例如,在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0:mysql> alter table MyClass add passtest int(4) default '0';1) 加索引mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);例子: mysql&...转载 2021-03-19 09:18:43 · 3281 阅读 · 0 评论 -
MySQL8 使用repalce 函数 变更字符串串包含\ 特殊字符处理
本文是基于:MySQL8 使用Like更新字段包含 \, 需要使用\\\\ 进行转义查询的深入研究在使用MySQL8 之replace 函数,变更部分字段包含特殊字符(\)之总结处理。特殊字符 Like查询 (模糊查询) replace 函数 或(精准查询=) \ \\\\ \\ \n \\\\n \\n \' \\\\' \\' \'' \\\\'' \\'' \b \\\\b \\b \r .原创 2021-03-02 17:45:35 · 1077 阅读 · 0 评论