![](https://img-blog.csdnimg.cn/20200331215936719.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Mysql
This is the MySQL knowledge area
南丘xf
好记性不如烂笔头——1枚昆明程序猿
展开
-
记录:同事问为什么Mysql设置id自增,结果是雪花算法生成?
Mysql中id为什么会是雪花算法产生的原创 2022-06-16 15:20:05 · 1610 阅读 · 1 评论 -
记一次低级错误:关于mybatis和mybatis-plus的路径扫描配置写法问题
一个项目采用SpringBoot和Mybatis-plus进行开发,测试环境验证通过,上线,出问题了,报错:大致意思就是找不到表,经过验证,表的确存在,这么一看,只能是扫描不到XML文件,估计配置文件有问题,一看配置文件,自己都没想到,犯了这么一个低级错误:#mybatis 设置mybatis.mapper-locations=classpath:mybatis/mapper/*.xmlmybatis.config-location=classpath:mybatis/config/my原创 2022-02-23 11:09:24 · 2145 阅读 · 0 评论 -
不得不提一嘴的索引命名规则
索引命名规则原创 2021-12-15 11:42:21 · 2207 阅读 · 0 评论 -
Navicat连接Mysql:1251 - Client does not support authentication protocol requested by server问题解决
本来本地Mysql好好的(版本Mysql8.0),Navicat连接也没毛病,可是用Navicat Premium连接了局域网下另外一台Mysql后(版本Mysql7.0),再返回本地连接时,竟然就报错了:为什么会出现这个问题呢?主要是因为Mysql8之后,加密规则更改了,之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,把mysql用户登录密码加密规则还原成mysql_native_password即可,但原创 2021-03-02 11:14:35 · 220 阅读 · 0 评论 -
Mysql的Limit都没搞懂,怪不得就老是报Java heap space的错了
一个同事需要做一件事情,需要从数据库取数据,然后按照固定格式存入文件,然后传至总行,在测试的过程中,需要大量数据,就以19年的生产数据进行测试,测试的过程中,老是提示Java heap space,便问我如何解决这个内存溢出的问题。如何解决这个问题,便只有从开发工具:Eclipse+Tomcat入手了,增大内存,不就Ok了吗?如何调整Eclipse和Tomcat运行时内存,网上方法很多,这里就不说了,可是奇怪的事情发生了,该同事调整以后,再次运行,又报Java heap space的错了。那么,初步原创 2020-09-27 11:10:39 · 673 阅读 · 0 评论 -
Mysql中的视图是什么?有什么作用?
Mysql中的视图,其实是一个虚拟表,使用时动态检索查询数据,如何理解这个概念呢?我们先建立基础表,语句如下:DROP TABLE IF EXISTS `user_info`;CREATE TABLE `user_info` ( `id` int(20) NOT NULL AUTO_INCREMENT, `arts_name` varchar(20) DEFAULT NULL, ...原创 2020-03-31 23:21:36 · 6645 阅读 · 1 评论 -
Mysql存储引擎有哪些?如何选择存储引擎?
Mysql自从5.5版本以后,默认采用InnoDB存储引擎,那么,除InnoDB外,Mysql还有没有其他存储引擎?我们可以用 SHOW ENGINES查询引擎(只需关注4种常用引擎即可:InnoDB、MyISAM、MEMORY、MRG_MYISAM),如果你想查看当前表的存储引擎,使用命令show create table table名即可。Support列的值表示某种引擎是否能够使用,...原创 2020-03-30 16:49:07 · 1616 阅读 · 0 评论 -
注意Mysql读取值很大的Double类型数据时会采用科学计数法
休息了好久,今天终于开工了。一个同事年前写的一段代码,今天测试的时候出了点问题,便找到我,我看了看他的代码,大概知道了原因。他要做的功能是采取POI导出数据为Excle,而且年前测试也没发现什么问题,但是由于某些原因,需要我导部分测试数据给他,所以测试出现问题便找到了我。说来也挺有意思,导给他的数据是今儿现造的,其中涉及的金额一项,我都设置的特别大,都是几亿几亿的造,导致他导出来的表格金额...原创 2020-02-24 17:48:53 · 3941 阅读 · 1 评论 -
为什么一些小型项目中,我还是会推荐使用JdbcTemplate?
大部分人刚开始学Java的时候,都是使用Jdbc连接数据库,其实Jdbc已经能够满足我们大部分的基础需求,但是使用Jdbc有一点不好,就是麻烦,必须创建大量的冗余代码,必须自己来管理数据库资源,比如创建连接,关闭连接,处理异常,获取PreparedStatement,设置SQL语句参数等等,虽然操作简单,但是效率着实不高。所以,新入职的同事在做一个demo的时候,我就强烈地推荐他使用Jd...原创 2020-03-03 16:21:11 · 1952 阅读 · 0 评论 -
org.hibernate.hql.internal.ast.QuerySyntaxException错误原因
在开发一个密码重置的功能过程中,因为调用方法失误,报了一个这样的错误:org.hibernate.hql.internal.ast.QuerySyntaxException: USERS is not mapped [sql语句],后面跟一大堆乱七八糟的东西,其实语句已经提示很明显,就是因为Hibernate。我们都知道Hibernate执行查询的语句hql是面向对象的查询,而非面向数据库...原创 2020-02-26 11:32:04 · 8753 阅读 · 0 评论 -
什么是MySql触发器?作用是什么?
由于项目经理临时有事,被安排面试一个新人,期间聊到了MySql的存储过程、触发器等知识,发现他对这一块的知识比较陌生,由于之前讲过存储过程,现在就讲讲什么是触发器。其实触发器很好理解,按照字面意思,就是会触发一系列事件操作的东西。基本概念:触发器是与表事件相关的特殊存储过程,它的执行不由程序调用,也非手工启动,而是由事件触发而被执行的(需要区别存储过程:存储过程则需要主动调用其名字执行)触发器...原创 2020-01-06 17:33:13 · 5681 阅读 · 0 评论 -
Mysql导入数据报错:Errcode: 28 - No space left on device问题解决
在测试环境导入测试数据的过程中,报了一个错误:(Errcode: 28 - No space left on device),错误比较明显,就是空间不足:我们先看一下Mysql对应的Linux路径,利用命令 ps -ef|grep mysql查看:usr/bin/mysql 是指:mysql的运行路径var/lib/mysql 是指:mysql数据库文件的存放路径usr/l...原创 2019-11-27 14:24:37 · 5715 阅读 · 0 评论 -
Mysql清空数据报错:1114 – The table ‘xxxx’is full问题解决
这里吐槽一下测试环境的空间太垃圾,只给数据库分配了4个G的空间,随便导入上百万条数据,轻轻松松就把空间给干满了,真是头疼,今早用Navicat清空数据的时候,报了一个错:1114 – The table ‘xxxx’is full网上的解决办法大概就是修改/etc/my.cnf配置文件,在在[mysqld]下添加/修改两行:tmp_table_size = 256Mmax_heap_t...原创 2019-11-27 11:32:46 · 7087 阅读 · 0 评论 -
联合索引失效(未注意最左原则)问题解决
生产上有一个运行了个多月的项目,随着数据越来越多,查询就变得越来越慢,按理说STATUS这个字段也加了索引,为什么会这么慢呢?之前有一篇文章已经讲解过索引的最左原则,今天讲讲为什么联合索引失效了。我们执行如下语句:SHOW INDEX FROM T_table_name 查看该表的索引情况:Table:表名称Non_unique:如果索引不能包括重复词,则为0。如果可以,则为1。...原创 2019-11-27 08:55:55 · 2508 阅读 · 0 评论 -
数据库设计说明文档自动生成(支持Mysql、Oracle和Postgres)
作为程序猿,写文档是必备的技能之一,可是大多数程序猿,都讨厌写文档,尤其是数据库设计说明书,因为这实在是一件费劲的事情,大多时候,程序出了Bug,都是直接调整数据库,增删改字段,时间久了,数据库文档就没人维护,就失去了参考意义。所以,能不能每次需要数据表设计说明文档时(领导要求或者其他需要),不再手写或者手动维护,而是能够自动导出呢?今天发现了一个比较厉害的项目,码云地址:https://git...原创 2019-10-22 10:42:11 · 2102 阅读 · 0 评论 -
MySQL/InnoDB锁介绍(乐观锁、悲观锁……)
为什么要引入锁这个东西——(并发控制)? 在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突,这就是典型的并发性问题。典型的冲突有:丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失。例如:用户A把值从6改为2,用户B把值从2改为3,则用户A丢失了他的更新。脏读:当一个事务读取其它完成一半事务的记录时,就会发生脏读取。例如:用户A,B看到的值...原创 2018-10-29 16:07:00 · 686 阅读 · 0 评论 -
Sql报错:[ERR] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'
在导一个数据库脚本的过程中,报了一个错:[Err] 1273 - Unknown collation: 'utf8mb4_0900_ai_ci'这个大致意思是字符集编码不识别,Mysql最新版本已经升级到8.0,而我本地版本是5.7,该版本自然是无法识别该字符集编码的,所以解决办法就是:utf8mb4_0900_ai_ci替换为utf8_general_ciutf8mb4替换为utf8...原创 2019-10-15 16:53:52 · 1253 阅读 · 0 评论 -
Mysql利用存储过程插入100万条测试数据
最近在建行公有云上安装Oracle Client,搞得火大,真是一件令人痛苦的事情,折腾了两天,实在是头疼。记录一下 看以后是咋个搞定的dddddddddd的d等等等...原创 2019-08-05 14:06:04 · 2803 阅读 · 0 评论 -
MySql内存表、临时表和普通表讲解
在MySQL中有三种虚拟表:临时表、内存表、视图(普通表),针对视图,这个大家都比较熟,但是当数据量非常大时,你可能需要对查询出来的一部分结果进行单独处理,比如在做一些参数比较多的报表系统时,常常会听到这样一句话:把这些参数取出来放到临时表里用。那什么是临时表,什么又是内存表呢?临时表,顾名思义,就是为了保存临时数据而存在的(MySQL 3.23版本以后才有),临时表只在当前连接可见,当关闭连...原创 2019-08-05 14:53:42 · 2400 阅读 · 0 评论 -
Mysql联合索引失效,需注意索引的最左原则
联合索引一直在用,没想到今天栽了跟头,联合索引竟然还有最左原则(左前缀原则)这么一个说法,那什么是最左原则呢?DROP TABLE IF EXISTS `gu_suo`;CREATE TABLE `gu_suo` ( `ID` varchar(16) NOT NULL, `ADM_DIV_CODE` varchar(16) NOT NULL, `VOUCHER_NO` varc...原创 2019-08-08 10:08:22 · 1482 阅读 · 0 评论 -
MySql常用知识归纳整理(收藏)
入门或者提升MySql,那推荐一书《Mysql必知必会》,提取链接:链接: https://pan.baidu.com/s/1lemqy8kaFEa4ycpSFj8qGw 提取码: mgtt一、连接与退出1、登录连接数据库(生产或者测试,大多用客户端工具)输入:mysql -u root -p 随后输入密码即可。PS:root为用户名,实际操作中请输入实际用户号。2、连接数据库以后...原创 2018-09-10 09:55:00 · 287 阅读 · 0 评论 -
MySql如何创建一个简单的存储过程?
1、什么是存储过程?大多时候,我们都是对一个表或者多个表的单条语句进行操作,但在实际生活中,我们有可能对多个表的多条语句进行操作,这个时候就需要用到存储过程。SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。存储过程是可编程的函数...原创 2018-09-10 15:40:00 · 1123 阅读 · 0 评论 -
MySQL索引创建以及优化技巧
1、什么是索引?索引是一种允许直接访问数据库表中的某一数据行的树形结构,为了提高查询效率而引入(加速查询)。在创建索引时,需要考虑哪些列会用于 SQL 查询,然后为这些列创建一个或多个索引。事实上,索引也是一种表,保存着主键或索引字段,以及一个能将每个记录指向实际表的指针。数据库用户是看不到索引的,它们只是用来加速查询的。数据库搜索引擎使用索引来快速定位记录。INSERT 与 UPDATE ...原创 2018-09-19 14:47:00 · 208 阅读 · 0 评论 -
挑战SQL经典题(一)
首先得建表,建表脚本:SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `course`-- ----------------------------DROP TABLE IF EXISTS `course`;CREATE TABLE `course` ( `cid` ...原创 2018-09-20 11:12:00 · 306 阅读 · 0 评论 -
挑战SQL经典题(二)
问题描述:card 借书卡:cno卡号,name姓名,class 班级books图书:bno书号,banme书名,author作者,price单价,quantity 库存册数borrow借书记录:cno借书卡卡号,bno书号,rdate还书日期备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。建表语句:DROP TABLE IF EXISTS `books`;CREAT...原创 2018-10-25 15:12:00 · 619 阅读 · 0 评论 -
Mysql常见优化技巧
Mysql基础打牢以后,优化就是一大难题。如何优化数据库呢?这也是面试常见的问题,除了添加索引以外,我们还需要从这些方面考虑:1)sql语句和索引(程序猿常常考虑的难题)2)数据库表结构(数据结构设计)3)系统配置4)硬件硬件和系统配置不做介绍,先简单介绍一下Mysql常见性能优化技巧:1、选择合适的数据库引擎Mysql 中有两个引擎 MyISAM 和 InnoDB:MyIS...原创 2019-03-14 14:27:00 · 177 阅读 · 0 评论 -
SQL长度:fasterxml.jackson.databind.JsonMappingException: Numeric value () out of range of int
在做资金清退管理系统Demo的时候,采用Mysql数据库,定义了一张表,存储身份证号,类型是int,长度是20,结果插入数据的时候,报错长度超长:身份证号18位,定义20位长,为什么会长度不够呢?我们先看这个例子,创建一张表:DROP TABLE IF EXISTS `t_test`;CREATE TABLE `t_test` ( `id` int(10) NOT NULL AU...原创 2019-09-12 09:38:44 · 8230 阅读 · 0 评论 -
AND和OR同时使用需注意优先级
我们都知道,无论是Mysql还是Oracle,AND和OR都是有优先级之分的,而且AND的优先级高于OR,同时使用两者的时候,一定要注意括号的使用,为什么这么说呢?先看sql脚本:CREATE TABLE ccb_test ( name VARCHAR(80) DEFAULT NULL, city_tree VARCHAR(50) DEFAULT '0', city_age VAR...原创 2019-07-24 17:31:05 · 2335 阅读 · 0 评论