
数据库
文章平均质量分 62
持久化存储
PrinciplesMan
一个人的生命是应该这样度过的:当他回首往事的时候,不因虚度年华而悔恨,也不因碌碌无为而羞耻。
展开
-
1215 - Cannot add foreign key constraint
出现这个问题主要有三个原因:(1)外键对应的字段数据类型不一致(2)设置外键时“删除时”设置为“SET NULL”(3)两张表的存储引擎不一致原创 2022-05-17 10:21:04 · 377 阅读 · 0 评论 -
Navicat mysql添加外键
外键条件在我们使用外键的时候,应该遵循如下条件:1外键要存在,首先必须保证表的引擎是 InnoDB(默认的存储引擎),如果不是 InnoDB 存储引擎,那么外键可以创建成功,但没有约束作用;2外键字段的字段类型(列类型),必须与父表的主键类型完全一致;3每张表中的外键名称不能重复;4增加外键的字段,如果数据已经存在,那么要保证数据与父表中的主键对应。5如果外键约束模式选择SET NULL ,那么字段必须允许为NULL,否则出现Cannot add foreign key constraint。原创 2022-03-09 20:00:50 · 2578 阅读 · 0 评论 -
1067 - Invalid default value for ‘LOCK_TIME_‘
今天从5.5的版本导入到5.7的版本报错1067 - Invalid default value for 'LOCK_TIME_'mysql> source cms_user.sqlQuery OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected, 1 warning (0.04 sec)ERROR 1067 (42000): Invalid default value for 'CREATE_TIME'ERROR 1146转载 2022-03-07 07:30:57 · 2770 阅读 · 0 评论 -
Mysql5.7 Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column
设置/etc/my.cnf配置文件,修改配置 [mysqld] 下的sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES请注意是 [mysqld] 下 ,不是[mysqld_safe] 下 否则配置不生效。查看是否修改成功:show variables like 'sql_mode';原创 2022-02-27 12:56:15 · 673 阅读 · 0 评论 -
mysql使用group by查询报错SELECT list is not in GROUP BY clause and contains nonaggregated column...解决方案
MySQL5.7.5后only_full_group_by成为sql_mode的默认选项之一,这可能导致一些sql语句失效。比如在使用group by进行分组查询报错1 查看自己的sql_mode配置: 在sql命令行中输入select @@sql_mode;这时我们能够看到自己的sql_mode配置,其中如果有ONLY_FULL_GROUP_BY,那它就是group by查询报错的罪魁祸首了2 解决办法:命令行打开mysql.cnf,默认路径为/etc/mysql/conf.d/...转载 2022-02-22 19:25:05 · 3633 阅读 · 0 评论 -
Invalid default value for ‘start_time‘
在mysql-5.7中,建表语句如下:CREATE TABLE seckilltemp2(`stock_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '商品库存id',`name` VARCHAR(120) NOT NULL COMMENT '商品名称',`number` INT NOT NULL COMMENT '库存数量',`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMEN转载 2021-09-28 21:39:32 · 1357 阅读 · 0 评论 -
mysql的索引方法btree和hash的区别
Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。可能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么大家不都用 Hash 索引而还要使用 B-Tree 索引呢?任何事物都是有两面性的,Hash 索引也一样,虽然 Hash 索引效率高,但是 Hash 索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些。转载 2021-09-26 17:02:04 · 599 阅读 · 0 评论 -
主键和唯一索引的区别
-- 区别主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。唯一性索引列允许空值,而主键列不允许为空值。主键列在创建时,已经默认为空值 + 唯一索引了。主键可以被其他表引用为外键,而唯一索引不能。一个表最多只能创建一个主键,但可以创建多个唯一索引。主键更适合那些不容易更改的唯一标识,如自动递增列、身份证号等。在 RBO 模式下,主键的执行计划优先级要高于唯一索引。 两者可以提高查询的速度。-- 创建转载 2021-09-25 22:51:21 · 273 阅读 · 0 评论 -
mysql通过binlog日志还原数据
前段时间由于客户电脑上的mysql数据丢失了,所以就研究了mysql通过binlog日志恢复数据,但是百度了好多感觉都不能一次性解决问题,或者是我没弄明白,最终研究了好久终于恢复成功,其实挺简单的,但是有几个前提条件,还有提醒一下,如果发现数据丢失了最好就不要启动什么系统了,就是最好把连接这个mysql的所有系统都切断:1、查看安装的mysql是否开启binlog日志功能,并且是row模式;show variables like 'log_bin%';这个表示是开启binlog日志功能的;转载 2021-09-06 22:41:54 · 580 阅读 · 0 评论 -
mysql中utf8和utf8mb4区别
MySQL在5.5.3之后增加了这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。 二、内容描述 那上面说了既然utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8...转载 2021-09-02 18:38:07 · 264 阅读 · 0 评论 -
mysql下的max_allowed_packet参数设置
MySQL根据配置文件会限制Server接受的数据包大小。有时候大的插入和更新会受 max_allowed_packet 参数限制,导致写入或者更新失败。(比方说导入数据库,数据表)查看目前配置:代码如下:mysql> show VARIABLES like '%max_allowed_packet%';+--------------------------+------------+| Variable_name | Value |+--------...转载 2021-09-02 17:30:58 · 1197 阅读 · 0 评论 -
MYSQL索引的作用和创建
索引是查询优化最主要的方式;查询方式:一种是:全表扫描;一种是:利用数据表上建立的所以进行扫描。如:对表中name字段建立索引;则按照表中name字段进行索引排序,并为其建立指向数据表中记录所在位置的“指针”。Mysql索引根据用途分为:1.普通索引:列值可以取空值或重复值。创建使用关键字INDEX或KEY;2.唯一索引:列值不能重复;即索引列值必须是唯一的,但可以是空值;创建使用关键字UNIQUE;3.主键索引:主键索引是系统自动创建的主键索引,并且是唯一的。与唯一索引转载 2021-08-23 17:23:07 · 630 阅读 · 0 评论 -
MYSQL的索引主要作用是什么
索引可以加快数据检索操作,但会使数据修改操作变慢。每修改数据记录,索引就必须刷新一次。为了在某种程度上弥补这一缺陷,许多SQL命令都有一个DELAY_KEY_WRITE项。这个选项的作用是暂时制止MySQL在该命令每插入一条新记录和每修改一条现有之后立刻对索引进行刷新,对索引的刷新将等到全部记录插入/修改完毕之后再进行。在需要把许多新记录插入某个数据表的场合,DELAY_KEY_WRITE选项的作用将非常明显。另外,索引还会在硬盘上占用相当大的空间。因此应该只为最经常查询和最经常排序的数据列建立索引转载 2021-08-23 15:59:29 · 2780 阅读 · 0 评论 -
Navicat 导入数据报错 --- 1153 - Got a packet bigger than ‘max_allowed_packet‘ bytes
今天在用Navicat导入SQL文件时报错:MySql 错误 Err [Imp] 1153 - Got a packet bigger than 'max_allowed_packet' bytes查了一下,原来是MySQL默认读取执行的SQL文件最大为16M,我这个SQL文件260M,所以执行不过去解决方法:在MySQL安装目录下找到文件my.cnf,搜索[mysqld],在其下面添加一句话max_allowed_packet=400M重启MySQL服务这个大小按自己的SQL文件大转载 2021-08-21 10:20:14 · 294 阅读 · 0 评论 -
mysql修改路径 Linux_Linux下修改MySQL数据库数据文件路径
使用rpm安装方式安装完MySQL数据库后,数据文件的默认路径为/var/lib/mysql,然而根目录并不适合用于存储数据文件。原路径:/var/lib/mysql目标路径:/home/mysql_data/mysqlLinux系统版本:centos7.6MySQL数据库版本:5.7.25步骤:1、创建目标路径mkdir -p /home/mysql_data2、关闭MySQLsystemctl stop mysqld3、复制数据文件cp -arp /var/l转载 2021-08-13 17:25:07 · 2602 阅读 · 0 评论 -
sqlite建立inner join 查询
table 1 bookbrief,price,type_id,author,book_name,idtable 2 booktypedetail,title,type_id查询book表中的所有字段和booktype表中的title中的信息用到inner join注意:是表与一个查询inner join,也是就说inner join的两边对应的是一个查询和一张表,决不能是两张表否则会报错的解一:select book.* ,booktype.title fro.转载 2021-08-12 11:32:21 · 548 阅读 · 0 评论 -
记mysql 启动不了了的解决方法
系统: centos7本地的环境,mysql启动不了,查看/var/log/mysqld.log有以下内容2018-12-24T08:05:38.090527Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).2018-1..转载 2021-07-21 11:07:33 · 632 阅读 · 0 评论 -
mysql启动之 Starting MySQL.. ERROR The server quit without updating PID file xs43254219216.pid
Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/data/xs******.pid).这篇文章提到了在mac上安装mysql安装不成功,可以采取的一列些的措施排查问题,知识点很多额~启动mysql时,出现如下错误:ERROR! The server quit without updating PID file (/usr/local/mysql/data/gujingdeMa转载 2021-07-21 11:05:49 · 990 阅读 · 0 评论 -
MySQL字段自增自减的SQL语句
MySQL的自增语句大家应该都很熟悉 也很简单update `info` set `comments` = `comments`+1 WHERE `id` = 32这样就可以了,但是有时候我们会涉及到做减法,例如:文章的评论数,在删除或者锁定了一条评论之后需要对该文章总评论数减一comments smallint(5) unsigned 文章评论总数统计字段 无符号即 0 ~ 65535 之间的数值1. 通常情况下是可以类似上面自增的方法 把 +号 改成 -号 就行了,但问题是如果当前转载 2021-06-16 09:20:15 · 1864 阅读 · 0 评论 -
【索引】:如何在海量数据中快速查找某个数据?
在【B+树】:MySQL数据库索引是如何实现的?中,我们讲了MySQL数据库索引的实现原理。MySQL底层依赖的是B+树这种数据结构。那类似Redis这样的Key-Value数据库中的索引,又是怎么实现的呢?底层依赖的有是什么数据结构呢?今天,我们来讲一下索引这种常用的技术解决思路,底层往往会依赖哪些数据结构。同时,通过索引这个应用场景,我也带你回顾一下,之前我们学过的几种支持动态集合的数据结构。为什么需要索引?在实际的软件开发中,业务纷繁复杂。但是万变不离其宗,如果抛开这些业务和功能的外壳,它转载 2021-05-22 09:23:28 · 2695 阅读 · 0 评论 -
SQL唯一索引
这种索引和前面的“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即必须唯一。唯一性索引可以用以下几种方式创建:创建索引,例如CREATE UNIQUE INDEX <索引的名字> ON tablename (列的列表);修改表,例如ALTER TABLE tablename ADD UNIQUE [索引的名字] (列的列表);创建表的时候指定索引,例如CREATE TABLE tablename ( [...], UNIQUE [索引的名字] (列的列表) );...原创 2021-05-20 14:19:21 · 4625 阅读 · 0 评论 -
Mysql 集群环境搭建
在上一篇文章中已经详细的写了关于Mysql的安装步骤。这一篇文章在上一篇文章的基础之上接着写集群的安装与部署。安装地址:https://www.cnblogs.com/ming-blogs/p/10962554.htmlMySQL主从复制配置主节点服务器 地址 192.168.0.105从节点服务器 地址 192.168.0.107主节点服务器安装好之后,直接clone 一个即可,不需要重复安装2次。主节点服务器配置1.进入配置页面命令 vi /etc/my.cnf...转载 2021-04-29 19:44:52 · 349 阅读 · 0 评论 -
52条SQL语句,性能优化,干货必收藏 !
SQL语句性能优化1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2,应尽量避免在 where 子句中对字段进行 null 值判断,创建表时NULL是默认值,但大多数时候应该使用NOT NULL,或者使用一个特殊的值,如0,-1作为默 认值。3,应尽量避免在 where 子句中使用!=或<>操作符, MySQL只有对以下操作符才使用索引:<,<=,=,>,>=,BETWEEN,IN...转载 2021-04-29 10:31:52 · 242 阅读 · 0 评论 -
【索引】:如何在海量数据中快速查找某个数据?
在【B+树】:MySQL数据库索引是如何实现的?中,我们讲了MySQL数据库索引的实现原理。MySQL底层依赖的是B+树这种数据结构。那类似Redis这样的Key-Value数据库中的索引,又是怎么实现的呢?底层依赖的有是什么数据结构呢?今天,我们来讲一下索引这种常用的技术解决思路,底层往往会依赖哪些数据结构。同时,通过索引这个应用场景,我也带你回顾一下,之前我们学过的几种支持动态集合的数据结构。为什么需要索引?在实际的软件开发中,业务纷繁复杂。但是万变不离其宗,如果抛开这些业务和功能的外壳,它转载 2021-03-06 10:22:02 · 734 阅读 · 0 评论 -
.Field ‘id‘ doesn‘t have a default value错误解决办法
存储的时候报Field 'id' doesn't have a default value错误错误分析如下:1.首先检查数据库设计的主键是否为Int 类型2.如果是Int 类型检查数据库中设置是否为自增各种数据库中的自增的方法不同,具体参考各个数据库的API...转载 2020-11-02 22:30:48 · 11970 阅读 · 0 评论 -
什么是ORM?为什么要用ORM?
了解orm,先了解以下概念:什么是“持久化”持久(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。什么是“持久层”持久层(Persistence Layer),即专注于实现数据持久化应用领域的某个特定系统的一个逻辑层面,将数据使用者和数据实体相关联。什么是ORM即Object-Relationl Mapping,它的作用是在关系...转载 2020-09-06 16:45:11 · 347 阅读 · 0 评论 -
乐观锁解决高并发
根本决解办法只有一个:队列,下面说的没有用的对于我们开发的网站,如果网站的访问量非常大的话,那么我们就需要考虑相关的并发访问问题了。而并发问题是绝大部分的程序员头疼的问题,但话又说回来了,既然逃避不掉,那我们就坦然面对吧~今天就让我们一起来研究一下常见的并发和同步吧。 为了更好的理解并发和同步,我们需要先明白两个重要的概念:同步和异步1、同步和异步的区别和联系 所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接...转载 2020-08-24 16:51:10 · 1143 阅读 · 1 评论