数据库
文章平均质量分 53
DanceDonkey
这个作者很懒,什么都没留下…
展开
-
Mybatis报错:Unsupported conversion from LONG to java.sql.Timestamp
如果实体类标注了@Builder注解,则此注解会把默认的构造方法全部改成私有的,则Mybatis在通过无参构造方法反射创建对象时,就会找不到构造方法,抛出Unsupported conversion from LONG to java.sql.Timestamp异常。这里完全可以抛出一个 MethodNotException,可以快速定位到是没有公开的空参构造方法的原因,这里Myabtis可以做优化。Mybatis在封装结果集的时候,如果方法返回的是对象,则会去调用这个对象的无参构造方法。原创 2024-04-07 10:53:51 · 494 阅读 · 0 评论 -
mysql连接报错The last packet successfully received from the server was 10,047 milliseconds ago.
当程序里的Connection超过数据库指定的时长以后,如果还没有会话信息,则服务器会断开此连接,但是客户端是无感知的,当客户端拿着这个断开的连接再去访问时,就会报这个错误信息。poolPingConnectionsNotUsedFor:连接活跃检测的间隔时间,这个时间一定要小于mysql服务器的wait_timeout。此报错信息往往与mysql数据库服务器设置的wait_timeout时间参数有关。poolMaximumIdleConnections:设置空闲时间的连接数。原创 2023-04-16 16:13:55 · 5829 阅读 · 0 评论 -
MYSQL中变量的操作
变量分为系统变量和用户自定义变量,顾名思义,系统变量就是系统定义好的一些变量,这些变量是固定的,而用户变量不是固定的,用户可以根据需求来定义且使用。系统变量系统变量又分为全局系统变量和会话系统变量,全局系统变量的修改影响所有的会话,而会话变量的修改只影响当前会话。查看系统变量show global variables查看时筛选show global variables like '%char%'查看会话变量show session variables 注意:如果gl原创 2022-07-19 21:42:24 · 180 阅读 · 0 评论 -
项目部署到阿里云服务器后连接数据库失败问题
本地跑项目时数据库是连接的阿里云的,启动查询是没有问题的,但是部署到阿里云上以后出现以下报错:首先排查一下是否由于环境问题导致,如spring.profiles.active没有及时切换如果是多数据源排除每个数据源的ip和端口以及用户名密码是否正确可尝试在链接参数上添加useSSL=true...原创 2022-07-07 14:18:35 · 1258 阅读 · 0 评论 -
SQL查询练习题
经典sql50练习题-- 1.查询" 01 “课程比” 02 “课程成绩高的学生的信息及课程分数use testdb;select *from student swhere (select score from sc where s.sid = sc.sid and sc.cid = '01') > (select score from sc where s.sid = sc.sid and sc.cid = '02')select s.*from student s.原创 2022-05-04 21:35:27 · 814 阅读 · 0 评论 -
Sql子查询的具体分析
select * from sys_menu;1.from xxx首先确定出要查哪个表,如果有连接查询,则多个表会生成笛卡尔积,生成一个虚拟表2.on xxx通过on条件一条一条筛选,又生成一个虚拟表3.紧接着来到where,根据where后的条件一条一条筛选 又生成一个虚拟表4.如果有group by 则执行group by 和 having5.紧接着来到select此时加入有10条数据那么还是会一条一条遍历,只取出你select指定的列在取的过程中,如果不是列变量,而是字符串,那么在原创 2022-04-29 22:23:29 · 678 阅读 · 0 评论 -
Mysql的事务隔离级别
查看数据库隔离级别select @@tx_isolation;设置数据库的隔离级别;set global transaction_isolation = 'READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ SERIALIZABLE '或者set global transaction isolation level READ UNCOMMITTED;不同事务之间操作数据可能会出现的问题脏写此时假设有一条id = 1,n.原创 2022-04-28 20:55:36 · 565 阅读 · 0 评论 -
Innodb存储引擎下索引模型以及设计注意事项
索引模型在innodb存储引擎下,只有主键索引(聚餐索引)的叶子节点才真正了存储的记录数据.其他的非聚簇索引叶子节点只存储索引列的值,叶子节点保存了叶子节点值和该条记录的主键值.创建一张测试表在这里插入代码片设置了id为主键以后,会自动为id列添加主键索引(聚簇索引),如果没有主键,则存储引擎会找一个有唯一约束的列生成聚簇索引,如果没有,则存储引擎会自已生成一个隐式的列来当做这条数据的主键.该聚簇索引的BTree示意图如下:如果为name字段添加了索引,则该索引BTree示意图如下:原创 2022-04-27 21:53:28 · 465 阅读 · 0 评论 -
Impossible WHERE noticed after reading const tables
创建一表并指定了一个唯一索引CREATE TABLE `student_info` ( `id` int(11) NOT NULL AUTO_INCREMENT, `student_id` int(11) NOT NULL, `name` varchar(20) DEFAULT NULL, `course_id` int(11) NOT NULL, `class_id` int(11) DEFAULT NULL, `create_time` datetime DEFAULT N.原创 2022-04-25 23:13:43 · 774 阅读 · 0 评论 -
Mysql的链接查询、union查询、外连接查询
测试数据链接查询链接查询:查询每个员工和其部门名 (笛卡尔积现象)通过等值链接条件过滤记录 (同条记录根据条件过滤)子查询单行单列子查询(sql执行结果只有一行一列)单列多列行查询(sql执行结果有一列多行,通常用于in)单行多列子查询 (sql执行结果有一行多列,通常用户条件匹配)子查询作为一张临时表使用(如查询高于本部门平均工资的员工,查询和本部门最高工资相等的员工)union 与 union all外连接查询...原创 2021-10-06 21:05:08 · 155 阅读 · 0 评论 -
解决Java向mysql插入数据时的乱码和时区问题
解决乱码和时区问题需要在jdbc的链接url上添加参数jdbc:mysql://mysql-server:3306/coin-exchange?useSSL=false&useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/ShanghaicharacterEncoding原创 2021-01-06 20:33:59 · 201 阅读 · 0 评论 -
Access denied for user ‘root‘@‘192.168.137.1‘
Java链接远程mysql经常出现root账号拒绝访问,需要给root账号开设远程授权grant all privileges on *.* to 'root'@"%" identified by "root";flush PRIVILEGES;原创 2021-01-05 20:56:44 · 356 阅读 · 0 评论 -
解决报错Cannot delete or update a parent row: a foreign key constraint fails
报错截图如果A表是主表(tbdept),B表是从表(tbemploy),在删除tbdept表中的数据时,如果tbemploy表有引用要删除的数据就会报这个错误,删除失败。解决可手动判断要删除的这个数据的值在子表中有没有记录,有的话就不执行删除操作先删除子表引用的数据,再删除主表的数据删除主表与子表的外键关系show create table tbemployCREATE TABLE `tbemploy` ( `SGUID` varchar(36) NOT NULL,原创 2020-12-05 11:03:03 · 2649 阅读 · 0 评论 -
基于数据库方式和Redis方法实现乐观锁
一、乐观锁意义乐观锁是相对于悲观锁而言的,悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁,关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。Java中synchronized和ReentrantLock等独占锁就是悲观锁思想的实现。乐观锁总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以原创 2020-11-22 16:41:39 · 580 阅读 · 1 评论 -
子查询的使用(where、select、from、exists)
一、子查询含义、分类含义:出现在其他语句中的select语句,称为子查询或内查询。嵌套这个select语句的查询称为主查询或外查询。分类:按子查询出现的位置select后的子查询from后的子查询where后的子查询exists后的子查询按子查询结果集的行列标量子查询(结果集只有一行一列)列子查询(结果集只有一行多列)行子查询(结果集只有一列多行)表子查询(结果集有多行多列)...原创 2020-11-20 09:20:31 · 2890 阅读 · 0 评论 -
详解SQL99语法各类查询使用
一、多表查询分类内连接 (inner join)等值链接非等值链接自连接外链接左外链接 (left join)右外链接 (right join)全连接 (full join)交叉连接 (cross join)语法:对join链接查询的详解可参考这里 https://blog.csdn.net/qq_43750656/article/details/106770806select [查询列表]from [表1] [别名] [链接类型] join[表2] [别名]原创 2020-11-19 10:08:36 · 372 阅读 · 0 评论 -
SQL常用函数
一、字符串相关函数CONCAT(字符串拼接)SUBSTR(截取字符串)LENGTH(返回字符串长度)INSTR(返回某个字符在字符串中第一次出现的下标,注意:mysql中的下标从1开始)LPAD(以指定的字符在字符串左边填充至指定长度)RPAD(以指定的字符在字符串右边填充至指定长度)TRIM(删除字符串起始位置的字符)REPLACE(根据指定的字符,替换字符串中的字符)使用示例#concat需要三个或二个参数,将第一个参数和第三个参数使用第二个参数拼接select concat原创 2020-11-18 10:36:33 · 273 阅读 · 1 评论 -
使用Redis和lua脚本的方式实现接口限流
注解使用说明@Limit注解我们自己自定义的限流方式思想为自定义一个注解,在写个注解中配置限流的一些信息,然后在接口方法上标注@Limit注解,通过对该注解的AOP功能可达到限流目的。@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface Limit { // 资源名称,用于描述接口功能 String name() default ""; // 资源 key原创 2020-10-27 16:41:44 · 840 阅读 · 0 评论 -
一文搞懂布隆过滤器以及如何解决Redis的缓存穿透问题
1.什么是缓存穿透?正常的查询数据库流程应该是先查缓存,如果缓存没有,再去查询数据库。当在数据库中查询完成后将查询的结果放入到缓存,这样下次请求的话就可以在缓存中获取到。那么缓存穿透就是类似于一种恶意攻击,例如数据库中存在id为1,2,3,4,5一共5条数据,如果一个请求查询id为6的数据,很明显这个数据缓存中没有,那么就会去查询数据库,但是数据库中也没有,那这样就造成了缓存穿透。如果这个请求一直在向服务器发送查询,则会给数据库带来很大的压力。2.什么是布隆过滤器?布隆过滤器(Bloom Filte原创 2020-10-11 19:22:23 · 658 阅读 · 0 评论 -
Mycat全局序列生成以及Redis自增主键
一、创建MyCat全局序列函数以及表在已配好的数据节点DataNode上执行建表SQLCREATE TABLE MYCAT_SEQUENCE (NAME VARCHAR(50) NOT NULL,current_value INT NOTNULL,increment INT NOT NULL DEFAULT 100, PRIMARY KEY(NAME)) ENGINE=INNODB;在已配好的数据节点DataNode上创建以下函数DELIMITER $$CREATE FUNCTION myca原创 2020-08-21 20:24:52 · 288 阅读 · 0 评论 -
SQL的慢查询日志使用详解
一、开启慢查询日志功能查看是否开启SHOW VARIABLES LIKE '%slow_query_log%';开启命令set global slow_query_log=1这种开启的方式只对当前数据库有效,如果mysql服务重启,则还是会失效。如何保证永久有效?需要在mysql的安装目录下找到mysql的配置文件,添加一下配置slow_query_log =1slow_query_log_file=/var/lib/mysql/sql-slow.log之后使用service m原创 2020-06-17 13:24:52 · 1438 阅读 · 0 评论