数据库
文章平均质量分 79
暗诺星刻
用心写好每一篇博客
展开
-
在 SQL 中,当复合主键成为外键时应该如何被其它表引用
而很奇妙的是,表 User、Folder 和 Contact 都有一个形同“userId”的字段,而且,它们的这个字段的意义是相同的。在 MySQL 中,如果建表时错误地将上述表 Contact 中的 userId 引用了表 User 中的 id,MySQL 并不会抛出错误,因为 MySQL 关于这方面不太严谨。因为 User 的主键不是复合主键,而且表 Contact 已经通过属性 linkedUserId 引用了表 User 的主键 id,因此不需要强制引用 User 的其它属性。原创 2023-11-14 01:08:49 · 5105 阅读 · 0 评论 -
解决 MyBatis 一对多查询中,出现每组元素只有一个,总组数与元素数总数相等的问题
对于笔者的一对多的查询结果,出现了这样的一个现象:原来每个组里有多个元素,查询目标是查询所查的组,以及每个组中的元素。如果一个用户有 3 个好友,每组 4 个好友,则上述代码的查询结果会变成,该用户有 12 个好友分组,每个分组 1 个好友。MyBatis 对于多表查询,要求组元素的字段必须是基本类型,而笔者编程时非常喜欢隔离、封装、解耦,擅自在上面将组元素的字段封装成了一个单独的类,然后把这个类的对象作为组元素的字段。笔者之后在不断地建新的更基本的表,进行一对多查询,终于让笔者发现了问题所在。原创 2023-10-17 23:08:58 · 4330 阅读 · 0 评论 -
解决CentOS8使用yum安装rpm报错为仓库appstream下载元数据失败Cannot prepare internal mirrorlist No URLs in mirrorlist
解析安装包依赖关系时需要联网,而在 2022年1月31日,CentOS团队从官方镜像中删除了所有 CentOS 8 的软件包。CentOS 8 已于2021年12月31日到期,但这些软件包在官方镜像上保留了一段时间。可以使用阿里云镜像。为此,需要先删除 CentOS 8 中的原镜像。最近,笔者在新服务器中安装 MySQL 时,却发生了报错。现在就可以下载阿里云镜像了。使用如下命令下载阿里云镜像。因此,CentOS 8 原镜像不可用。中,删除的方法有很多,这里只举一例。就不会出现前述的报错了。原创 2023-06-08 23:33:52 · 5195 阅读 · 2 评论 -
为什么 MyBatis 里,Mapper 中的方法不能被重载
为什么 MyBatis 里,Mapper 中的方法不能被重载 很多人还没意识到,在 MyBatis 里,Mapper 中的方法是不能被重载的,这与形参个数无关。为什么会这样呢? MyBatis 对 Mapper 进行动态代理的时候,使用了一种 ID 值来标识每个 SQL 语句,而这种 ID 值是只是由 Mapper 的类名和方法名来共同标识的,这不包括方法形参。具体源码分析如下: 如下图所示。MyBatis 首先是用 Mapper 的类名和方法名生成了一个 mappedStatementId,然原创 2022-05-09 22:00:50 · 2171 阅读 · 0 评论 -
如何验证 MySQL 的 InnoDB 在可重复读下依然会有幻影行问题及其原因
如何验证 MySQL 的 InnoDB 在可重复读下依然会有幻影行问题及其原因验证的流程自助验证为什么 MySQL 的 InnoDB 在可重复读下依然会有幻影行问题 很多人都知道,MySQL 的 InnoDB 在事务隔离级别 REPEATABLE READ 下解决了不可重复读的问题,但是依然有幻影行问题。不过很多人都不知道这是为什么,也有很多错误的解释与验证。 下面开始验证。首先要区分两个概念,正在观察的事务、其它事务。正在观察的事务指的是用于界定事务是否发生幻影行的事务,正在观察的事务只存在一个。原创 2022-02-06 01:25:19 · 257 阅读 · 0 评论 -
为什么一级封锁协议不能保证不读取到脏数据
为什么一级封锁协议不能保证不读取到脏数据?为什么一级封锁协议不能保证不读取到脏数据 一级封锁协议可以保证某事务在修改数据之前必须先加直到事务结束才会释放的排他锁,这看起来就已经阻止了脏读,那为什么各个书中都表示一级封锁协议不能保证不读取到脏数据呢? 这还是要归咎于各个书籍编写者对于概念定义的疏忽大意。在弄清这个问题之前,需要澄清被很多人误解的概念。比如什么是脏读、一级封锁协议等。笔者已经将这部分的内容独立成了另一篇博客,可见:剖析数据库中重要而又常被曲解的概念:https://blog.csdn.原创 2022-02-05 03:09:03 · 4758 阅读 · 6 评论 -
剖析数据库中重要而又常被曲解的概念
剖析数据库中重要而又常被曲解的概念排他锁共享锁意向锁粒度树意向锁两段锁协议一级封锁协议二级封锁协议三级封锁协议脏读不可重复读幻影行可串行化排他锁排他锁(exclusive locks):指的满足此条件的锁:当某事务对某数据加上排他锁之后,直到该事务释放这个锁之前,其它事务不能再对这个数据再加排他锁和共享锁。共享锁共享锁(share locks):指的满足此条件的锁:当某事务对某数据加上共享锁之后,直到所有事务都释放了对该数据加上的共享锁之前,任何事务都不能对该数据加上排他锁,但可以对其加共享锁原创 2022-02-04 01:31:30 · 1735 阅读 · 0 评论 -
解决MySQL删除外键时报错Error Code: 1091. Can‘t DROP ‘XXX‘; check that column/key exists
解决MySQL删除外键时报错Error Code: 1091. Can't DROP 'XXX'; check that column/key exists 长期不写基础的 MySQL 代码,笔者也开始犯一些低级错误。最近,笔者在尝试将表中某列的外键约束删除时,MySQL 却一直报该列本就不存在的错误。笔者报错时的运行环境:MySQL 8.0.27Windows 10 教育版Error Code: 1091. Can't DROP 'XXX'; check that column原创 2022-01-06 01:37:12 · 27084 阅读 · 3 评论 -
解决MySQL报错... right syntax to use near ‘password ‘XXX‘ at line 1...ERROR 1064 42000: You have an erro
解决MySQL报错... right syntax to use near 'password 'helloworld' at line 1...ERROR 1064 42000: You have an error in your SQL syntax 笔者在新电脑安装 MySQL 时,发现在初次登录 MySQL 后修改密码时,总报如下的错:笔者报错时的运行环境:MySQL 8.0.27Windows 10 教育版mysql> set password for root@原创 2021-12-03 00:34:27 · 6213 阅读 · 5 评论 -
解决MySQL报错ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘ (10061)
解决MySQL报错ERROR 2003 HY000: Can't connect to MySQL server on 'localhost:3306' 10061 笔者在新电脑安装完 MySQL 后,尝试登录时,MySQL 一直给出如下报错。后来又不断卸载 MySQL,然后按原始方法重新安装 MySQL,终于发现了原因所在。ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061)笔者报错时的运行环原创 2021-12-02 00:26:53 · 38964 阅读 · 2 评论 -
如何在 Windows 上安装多个 MySQL,实现 MySQL 跨电脑移植使用
实现了在 Windows 上安装多个 MySQL、MySQL 跨电脑移植使用的标准是,如果在一个 Windows 上安装了一个 MySQL,然后将此 MySQL 数据拷贝到第二台没有安装过 MySQL 的 Windows 上,第二台 Windows 可以无附加条件地通过一定的方法来访问此 MySQL 数据库,且数据库中的数据没有损失。达到了上述的标准就认为实现了 MySQL 的跨电脑移植使用。MySQL 可以实现这样的技术。具体来说,如果可以将一台 Windows 上的数据库拷贝到第二台电脑上,第二台电脑原创 2021-12-01 00:58:35 · 1463 阅读 · 0 评论 -
MySQL 免安装版的下载与配置教程
【说明】本教程讲述的是 Windows 下 MySQL 免安装版的下载与配置。这往往是喜欢从 CMD 中执行 MySQL 代码,或者是希望需要下载的文件尽可能小的使用者的偏爱。如果读者和他们与众不同,更喜欢站在巨人的肩膀上,可以选择集成的 IDE 来避免进行本教程中讲述的烦琐操作。笔者的环境:Windows 10 教育版。原创 2021-11-27 06:00:13 · 21660 阅读 · 4 评论 -
深入理解 CAP 定理
深入理解 CAP 定理什么是 CAP 定理结点、系统、集群一致性、可用性、分区容错性为什么不能同时满足 CAP总结什么是 CAP 定理 CAP 定理是分布式系统、NoSQL 中必定要知道的内容。它指的是,对于一个分布式系统,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)最多只能同时满足其中两个。具体来讲,最多只能同时满足的那两个可以为 CP 或 AP,但不能同时满足 CA。 什么是一致性、可用性、分区容错性呢?在介绍这几个原创 2021-09-15 04:15:34 · 2056 阅读 · 0 评论 -
Linux 下 Redis 安装教程
Linux 下 Redis 安装教程笔者的运行环境:CentOS Stream 8 x86_64Redis 6.2.5进行这个教程之前,必须要先安装好一个 Linux 操作系统。这个 Linux 操作系统可以安装在虚拟机中,也可以安装在真实的电脑中。关于这方面的内容,可见笔者的其它博客:VMware Workstation Pro 16 安装教程:https://blog.csdn.net/wangpaiblog/article/details/112152218?spm=1001.201原创 2021-09-14 01:16:21 · 14138 阅读 · 5 评论 -
Linux 下 MySQL 安装教程
Linux 下 MySQL 安装教程事先准备下载 MySQL卸载 MySQL安装 MySQL设置 MySQL 开机自启动远程访问 MySQL使用 MySQL Workbench 远程访问 MySQL使用 Navicat Premium 远程访问 MySQL笔者的运行环境:CentOS Stream 8 x86_64MySQL 8.0.26事先准备进行这个教程之前,必须要先安装好一个 Linux 操作系统。这个 Linux 操作系统可以安装在虚拟机中,也可以安装在真实的电脑中。关原创 2021-09-13 02:43:12 · 20764 阅读 · 12 评论 -
解决Hibernate报错The server time zone value is unrecognized or represents more than one time zone
解决Hibernate报错The server time zone value is unrecognized or represents more than one time zone 笔者在使用Hibernate做代码重构的时候,运行时一直报同一个错误。当时笔者的运行环境如下:报错时的运行环境:JDK 13.0.2MySQL 8.0.21Hibernate 5.4.25 Final ReleaseIntelli] IDEA 2020.1.2 (Ultimate Edition) 这原创 2021-01-20 00:01:20 · 2786 阅读 · 0 评论 -
MySQL 下载安装教程
本教程只是 Windows 下 MySQL 的一种集成 IDE 的安装教程。安装此 IDE 还免去了手动在 Windows 上配置 MySQL 的麻烦。不过如果读者对 MySQL 安装的底层细节比较感兴趣,抑或对从 CMD 中执行 MySQL 代码有执著的偏爱,可见笔者的另一篇博客:MySQL 免安装版的下载与配置教程:https://blog.csdn.net/wangpaiblog/article/details/121571927 对于 Linux 下 MySQL 的安装,可见笔者的另一篇博客:Lin原创 2021-01-15 22:52:46 · 65535 阅读 · 6 评论 -
MySQL 驱动的下载方法
MySQL驱动的下载方法说明步骤说明 在使用配合其他语言的编程软件时,有可能需要在那些软件上添加MySQL的库文件,这些文件也是在MySQL官网下载。这里以Java编程所需的MySQL文件为例。步骤进入MySQL官网,网址:https://dev.mysql.com/downloads/以Java IDE编程所需的文件为例,需要选择其中的免安装文件(压缩包形式)进行下载。下载之后,将得到一个压缩文件,如 mysql-connector-java-8.0.21.zip ,解压该原创 2021-01-01 00:53:20 · 27332 阅读 · 0 评论