![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
dark_horse_lk
这个作者很懒,什么都没留下…
展开
-
不停机修复mysql主从数据同步错误导致服务器磁盘占满问题
经过磁盘空间检查,主要是/mysql/data目录使用100%(直接占满了),进入目录后发现被文件slave-relay-bin.*系列文件占满了。发现如图所示的提示信息,等待磁盘空间,具体错误的原因是从库好像被人修改过数据,导致同步数据过程中数据不一致,所以一直报错,导致日志占满了磁盘空间。2-4:然后将从库清空,为保险期间我清理了/mysql/data目录下所有的slave-relay-bin.*系列文件,然后对应的业务库删掉重建。2-10:检查主库和从库业务表数据是否一致,磁盘空间是否正常。原创 2023-04-28 15:17:30 · 990 阅读 · 0 评论 -
mysql 递归查询函数大数据量返回数据不全
mysql 递归查询函数大数据量返回数据不全项目中发现,一棵树定义的特别大的时候,查出来的数据缺失了一部分原创 2023-02-17 15:12:11 · 635 阅读 · 0 评论 -
mysql创建view并且赋予对应权限
业务场景,我们系统要对外开放一个指定的只读视图。使外部系统可以直接访问对应的数据。3:给创建的用户(lisi)赋予这个视图只读权限。4:如果赋权限错了,可以使用revoke进行撤销。1:创建一个用户供外部系统使用。2:创建业务所需要的视图。原创 2022-10-14 15:53:07 · 1052 阅读 · 0 评论 -
MySQL8.0版本 function关键字采坑记
自己本地测试环境MySQL:5.7。线上生产环境MySQL:8.0新功能中添加了一张表,表中有个function字段测试环境运行一切正常。生产环境报如下错误Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to y.原创 2021-11-12 11:07:40 · 1311 阅读 · 0 评论 -
mysql事务锁手动释放
1:查看数据库当前的进程,这个命令可以列出当前库所有的线程mysql> show processlist;2:查看当前的事物情况 2-1:查询当前数据库运行的所有事物mysql> SELECT * FROM information_schema.INNODB_TRX; 2-2:查询当前数据库出现的锁mysql> SELECT * FROM information_schema.INNODB_LOCKs; 2-3:...原创 2021-08-26 14:44:07 · 2089 阅读 · 0 评论 -
Oracle mybatis 批量新增时使用序列的写法
记录下Oracle数据库在使用mybatis框架批量新增的时候使用序列的特殊写法刚开始时是直接select出来之后在service中使用的,但是批量生成数据的时候会出现频繁访问数据库,所以才探索了一番。于是有了下面的写法(我这边不是单纯用序列生成id,所以在最内层的select中需要取上别名好在外层的select中使用)...原创 2020-06-05 15:53:18 · 627 阅读 · 0 评论 -
Oracle分页、排序导致的数据重复
今天测试提了一个bug,分页数据不对,我寻思了半天先来说下开发环境:数据库Oracle持久框架 mybatis分页插件 PageHelper项目工程 spring-boot最终排查,将最终执行的sql打印出来,才找到了罪魁祸首 "oracle排序的不稳定"因为数据是批量插入的,所以create_time基本是一样的分页语句如下:select * from( select a.*, rownum rn from ( select * from us...原创 2020-05-26 11:25:49 · 717 阅读 · 0 评论 -
oracle排序时null值的三种常见处理方式
1:缺省值排序默认为缺省值排序,这种排序方式会将null作为无穷大的值进行排序,ASC就是null在最后,DESC就是null在最前2:使用nvl函数使用nvl函数将null值转换为其它值进行需要的排序顺序3:使用decode函数原理基本一致,只是功能比nvl函数更加强大decode(emp_no, null, 0, emp_no),有点像三目运算。...原创 2020-03-11 15:12:30 · 414 阅读 · 0 评论 -
mongodb分页查询、模糊匹配查询、数组元素匹配查询
近期有相关需求,探索完使用方法之后做个记录Query query = new Query(); if(StringUtils.isNotEmpty(name)){ //Pattern pattern = Pattern.compile("^张$", Pattern.CASE_INSENSITIVE); //完全匹配 //P...原创 2020-03-11 14:34:35 · 1697 阅读 · 0 评论 -
mongodb查询匹配数据类型引起的问题
今天遇到了一个坑(自己理解不到位),特此记录下。场景是这样的,根据key_id保存修改,最后发现修改前后数据没啥变化。update的语句如下,没什么问题。于是我怀疑问题出现在了query的查询条件 Query query = new Query(); if(EnvironmentConstant.TRAVEL_SKY.equals(environment...原创 2020-03-11 11:11:52 · 982 阅读 · 0 评论 -
mongodb查询之只查询指定字段
由于数据量比较大,数据结构复杂,最近在项目中有了从mongo中查取数据的需求。从开始直接使用api去查询,到后面使用DBcursor查询,虽然效率上取得了一旦的效果,但是没有达到预期,最后打日志分析得出,其实查询本身很快了,只是在数据传输的过程中比较慢(由于数据量比较大)。于是就有了今天的主题 -- 只查询指定的字段经过探索,有两种方式,用起来比较顺手,具体看使用时的场景。第一种...原创 2019-12-31 14:29:41 · 5628 阅读 · 0 评论 -
Mongo Sort operation used more than the maximum 33554432 bytes of RAM
最近在使用mongodb的时候由于数据量比较大,在查询的时候出现了如下错误。Query failed with error code 96 and error message 'Executor error during find command: OperationFailed: Sort operation used more than the maximum 33554432 bytes...原创 2019-11-08 15:50:02 · 173 阅读 · 0 评论 -
使用PL/SQL备份和恢复Oracle
数据库备份是常见的操作,今天整理了一下,我使用的Oracle客户端工具书PL/SQL其备份方法如下:1:通过PL/SQL连接Oracle数据库服务。2:首先我们备份数据库的用户对象(也就是数据表、表结构等),操作步骤: 工具选项卡下面的导出用户对象,如下图所示:点击之后可以选择需要备份的对象如下图选择相应的对象,选择导出位置之后导出即可。2:我们原创 2017-02-24 15:58:31 · 4675 阅读 · 0 评论 -
mybatis中的xml文件中的特殊转义字符处理(<[!CDATA[]]>的用法)
我们在使用Mybatis的时候,大致由三部分组成。model、mapper接口、mapper.xml1:其中model就是我们经常使用的实体类,可以再mapper.xml中直接使用(当做参数或者结果返回)2:mapper接口就是对服务层提供的接口,是整个数据库操作的封装。3:mapper.xml是我们来写sql的地方,每一个sql都有一个唯一标示的id,而这个id要与mapper接原创 2017-03-22 20:16:18 · 3706 阅读 · 0 评论 -
MyBatis的批量更新
MyBatis的批量更新有两种情况:第一种:更新的字段值都是一样的(具体如下) update DUTY set DUTY_NAME = #{dutyName} where DUTY_ID in #{id}原创 2017-04-12 16:18:37 · 357 阅读 · 0 评论 -
oracle用户名密码过期
在使用oracle的过程中会遇到密码过期这种情况。oracle默认密码过期期限是180天。如果密码过期,会提示你修改新密码并且新密码不能喝旧密码相同。修改后又要通过alter user 用户名 identified by 新密码;改回来,这样很麻烦。现在我们将数据库密码过期设置为永不过期。1:通过下面的语句查询用户的profileSELECT username,原创 2017-12-07 14:27:21 · 1921 阅读 · 0 评论 -
关于SQL优化的一些总结
SQL优化的几点意见:1:对查询进行优化尽量避免全表扫描。首先应该考虑在where 或者 order by 涉及到的列上添加索引。2:尽量避免在where子句中对null值判断,否则查询会放弃走索引。3:尽量在where子句中不使用 != 或者 <> ,否则查询会放弃索引,进行全表扫描。4:尽量避免在where子句中使用or连接条件,这样也会放弃走索引查询(可以考虑使用union al...原创 2018-06-24 19:41:59 · 142 阅读 · 0 评论 -
如何防止SQL注入--浅谈
sql注入是一种十分简单的对数据库数据进行攻击的一种手段,如下所示: private String getNameByUserId(String userId) { Connection conn = getConn();//获得连接 String sql = "select name from user where id=" + userId; PreparedS...原创 2019-02-12 11:04:31 · 13977 阅读 · 3 评论 -
linux下面MongoDB的安装配置详情-用户权限设置
1:下载mongdb的安装包https://www.mongodb.com/download-center/community2:使用SSH工具将安装包上传至服务器某个目录(/usr/local/mongo 为例)tar -xzvfmongodb-linux-x86_64-3.6.14 //解压安装包3:将mongdb添加到PATH中vi /e...原创 2019-08-30 16:40:58 · 298 阅读 · 0 评论 -
spring-data-mongodb中执行mongo的原生查询语句
最近在项目中遇到了通过前端组合条件生成查询的mongo原生查询语句类似于这样的语句{$and : [{ARV_APT: "PEK"}, {$and: [{FLT_DATE: {$gte: "20180101"}}, {FLT_DATE: {$lte: "20180104"}}]}]}然后传给后端进行查询,将结果返回。之前使用mongodb进行CRUD的时候都是基于API的1:使用...原创 2019-09-05 18:22:22 · 7954 阅读 · 2 评论 -
Mybatis的批量插入(oracle、MySQL)
1:数据库使用oracle时,Mybatis的批量插入语句如下: insert into PERSONAL_MESSAGE_SET (PERSONAL_MESSAGE_SET_ID, ACCOUNT_ID, MODULE_CODE, RECEIVE_TIME_AFTER, STATE_REMIND_LA原创 2017-02-15 16:59:49 · 243 阅读 · 0 评论