这次选用nodejs+express+mysql 使用http作为客户端,express框架搭建服务端,从而实现数据的增删改查。这篇文章可以算作上篇文章的升级篇,加入了和数据库的交互。
先讲一下写该文章的原因,首先,工作中又遇到一条很熟悉的MySQL报错信息 Cause: java.sql.SQLException: Incorrect string value:Cause: java.sql.SQLException: Incorrect string value… (emoji表情存储导致),原因是MySQL的字符集导致的;其次,因为一直听说数据库变更可能锁表,但是一直不知道到底哪些操作会导致锁表。所以今天对相关知识做一个系统的整理。
对MySQL数据库中的事务操作、存在的问题和相应的隔离级别等知识点进行整理,通过实例进行说明
| ERROR 1046 (3D000): No database selected |
###1 MySQL登录与退出 MySQL登陆 MySQL 参数(在cmd命令框中输入) 登陆MySql mysql -uroot -p -P3306 -h127.0.0.1 MySql退出
DBMSDatabase Management System 数据库管理系统,简称DBMS ,是用来管理数据的专用软件。
1.read uncommited--读未提交前置条件: 1.开启两个 mysql 客户端终端
在文章开始前,大家可以先考虑几个问题,这样方便更快理解文章的知识点,下面的问题都会在文章中找到答案哦!
Apollo(阿波罗)是携程开源的分布式配置中心,能够集中化管理不同环境、不同集群的应用配置,配置修改后能够实时推送到客户端,具备规范的权限、流程治理等特性,适用于绝大多数的微服务配置管理场景。详细的介绍可点击 Apollo Wiki 进行了解,本文基于简单的本地部署和 Docker 部署示例进行演示。
1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。
是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。
1、修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2、创建数据库时,指定数据库的字符编码 mysql> create database mydb character set utf8 ; 3、查看mysql数据库的字符编码 mysql> show variables like 'character%'; //查询当前mysql数据库的所有属性的字符编码 +--------------------------+---------------
mysqli_set_charset()函数规定当与数据库服务器进行数据传送时要使用的默认字符集。
Server 层:负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现,主要包括连接池,执行器、优化器、解析器、预处理器、查询缓存等。另外,所有的内置函数(如日期、时间、数学和加密函数等)和所有跨存储引擎的功能(如存储过程、触发器、视图等)都在 Server 层实现;
Oracle创建数据库时指定字符集,一般不能修改,整个数据库都是一个字符集。虽然还支持指定国家字符集,用于nvarchar2类型,不过很少用到。常用的字符集:AL32UTF8和ZHS16GBK,其中AL32UTF8与UTF8几乎是等价的。一个汉字在AL32UTF8中占三个字节,而在ZHS16GBK中占用两个字节。
Hi,大家好,我是麦洛,今天我们聊聊MySQL的备份和恢复,在下面文章中,你会了解到MySQL常见的备份类型,以及基于mysqldump命令在日常开发中如何做MySQL数据库以及表的备份和恢复。最近开始玩公众号了,喜欢的小伙伴可以关注我
MySQL 支持多种字符集,使您能够使用各种字符集存储数据,并根据给定排序规则执行比较。
既然说到了Mysql锁,那么什么是Mysql锁呢?本质上来说,锁是一种协调多个进程或者多个线程对某一资源的访问的机制,Mysql通过锁实现了事务的隔离级别;通俗来说就是当应用访问某一资源时,会对当前资源加锁,防止其他请求来访问该资源,导致产生问题,待当前应用对这一资源访问结束后再释放锁供其他请求获取该资源。
在数据库中,除了传统的计算资源(如CPU、RAM、IO等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。
了解事务之前,先来看看数据库为什么需要有事务,假设没有事务会有什么影响?假设我们有一个银行账户系统,表结构如下:
当客户端A检查还有一张票时,将票卖掉,还没有执行更新数据库的时候,客户端B检查了票数,发现大于0,于是又买了一次票。然后客户端A将票数更新回数据库。于是就出现了同一张票被卖了两次的情况。
图1 超时报错 就是这个异常(com.mysql.jdbc.exceptions.jdbc4. CommunicationsException:Communications link failure Last packet sent to the server was X ms ago),是由于MySQL服务在长时间不连接之后断开了,断开之后的首次请求会抛出这个异常。那么既然是连接超时的问题,就要去MySQL中探究一下连接时间是怎么控制的。打开MySQL的控制台,运行:show variables like ‘%timeout%’,查看和连接时间有关的MySQL系统变量,得到如下结果:
这篇文章能够阐述清楚跟数据库相关的四个概念:事务、数据库读现象、隔离级别、锁机制
MySQL体系前端接受连接,并提供多种API,连接池化可重用。这里连接可以理解为线程,来处理来自客户端的请求。后台存储引擎负责控制IO策略,内存缓冲和线程调度,以及会话事务管理。 我们这里分析在MySQL5.6以后的默认引擎InnoDB。
在D:\mysoft\mysql-8.0.35-winx64下新建my.ini文件
前几天在群里有个朋友问到max_allowed_packet被自动重置的问题,于是打算写个文章来描述下,因为遇到这个问题的人不少,但是提到的解决方案几乎没有。
前言: 1.mysql数据库服务在不授权的情况下,只允许数据库管理员从数据库服务器本机登陆. 2.系统管理员才有修改数据库管理员密码的权限. 一、用户授权(grant) 默认只有数据库管理员从数据库服务器本机登陆才有授权权限 1.授权命令格式: 1.1从客户端登陆的时候不需要密码 grant 权限列表 on 数据库名 to 用户名@"客户端地址"; 1.2 授权用户可以从网络中的任意地址登陆到mysql server服务器 grant 权限列表 on 数据库名 to 用户名; 1.3 设置
connect = Connection = Connect 本质上是一个函数,使用这三个里面的任何一个函数都可以创建一个连接对象
和其他数据库相比,mysql即可以嵌入到应用程序中,也可以支持数据仓库,内容索引和部署软件,高可用的冗余系统,在线事务处理系统(OLTP)等各种应用类型。
set character_set_client = gbk; -- 来自客户端的语句的字符集。服务器使用character_set_client变量作为客户端发送的查询中使用的字符集。
推荐阅读 微服务: springboot系列教程学习 源码:Javaweb练手项目源码下载 调优:十五篇好文回顾 面试笔试:面试笔试整理系列 希望这篇文章能够阐述清楚跟数据库相关的四个概念:事务、数据库读现象、隔离级别、锁机制 一、事务 先来看下百度百科对数据库事务的定义: 作为单个逻辑单元执行一系列操作,要么完全执行,要么完全不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。 事务有四个属性,称为ACID属性: 1、原子性(Atomicity):事务是一个原子单
数据库事务是访问可能操作各种数据项的一个数据库操作序列,这些操作要么全部成功,要么全部失败。提起事务,大家都知道ACID属性,这些特性在前边的文章里都有详细的讲解,感兴趣的可以通过历史文章查看。在Java中有并发编程,可以多线程并发执行,并发可以提高程序执行的效率,也会带来线程安全的。数据库事务和多线程一样,为了提高数据库处理事务的吞吐量,数据库也支持并发事务,在并发处理数据的过程中,也存在着安全问题。
数据库就是存储和管理数据的仓库,数据按照一定的格式进行存储,用户可以对数据库中的数据进行增加、修改、删除、查询等操作。
MySQL 8.0 引入了很多令人振奋的新特性,跟账户认证相关的新特性包括:新增caching_sha2_password身份认证插件,支持角色,区分系统账户和普通账户,维护密码历史信息限制重复使用以前的密码和密码过期等,双重密码,生成随机密码,登录失败跟踪和临时锁定账户。
分别是InnoDB、MRG_MYISAM、MEMORY、BLACKHOLE、MyISAM、CSV、ARCHIVE、PERFORMANCE_SCHEMA、FEDERATED。
关键词: Mysql数据存储位置 | win10 + MySQL Server 8.0 | 环境:win10 + MySQL Server 8.0.15` | 修改数据存储位置
事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。
离线数据分析平台实战——110Hive介绍和Hive环境搭建 Hive介绍 Hive是构建在Hadoop之上的数据仓库平台,设计目标就是将hadoop上的数据操作同SQL结合,让熟悉SQL编程的开发人员能够轻松的向Hadoop平台上转移。 Hive可以在HDFS上构建数据仓库存储结构化数据,这些数据来源就是hdfs上,hive提供了一个类似sql的查询语言HiveQL来进行查询、变换数据等操作。 当然HiveQL语句的底层是转换为相应的mapreduce代码进行执行的。 Hive组成 Hive包含用户接口
JetBrAIns DataGrip 2022 for Mac不管是在国内还是国外都是一款不容小觑的数据库客户端软件。DataGrip 2022 Mac中文版可用于完成数据库的常用操作,包括查询数据、修改数据,创建数据库、表等,它对于数据库的支持很宽泛,从PostgreSQL到MySQL再到Oracle这些都支持,且允许您以不同模式执行查询,并提供本地历史记录,以跟踪您的所有活动并保护您免于丢失工作。
JetBrains DataGrip 2022 for Mac不管是在国内还是国外都是一款不容小觑的数据库客户端软件。DataGrip 2022 Mac中文版可用于完成数据库的常用操作,包括查询数据、修改数据,创建数据库、表等,它对于数据库的支持很宽泛,从PostgreSQL到MySQL再到Oracle这些都支持,且允许您以不同模式执行查询,并提供本地历史记录,以跟踪您的所有活动并保护您免于丢失工作。
今天写了一个mysql数据库的用户新增模块,逻辑是根据用户 ID 查询用户数据,若不存在则创建新用户并返回用户数据,数据库是保持常连接状态,测试的时候发现无法读取最新数据,一直读取第一次的数据,然后就百度发现emmm,还真有志同道合的
EasyGBS国标视频云服务平台不仅支持无缝、完整接入内网或者公网的国标设备,在输出上,可实现全平台、全终端输出。平台支持将GB/T28181的设备/平台推送的PS流转成ES流,并提供RTSP、RTMP、FLV、HLS、WebRTC等多种格式视频流的分发服务,实现Web浏览器、手机浏览器、微信端、PC客户端等各终端无插件播放。
需要工具:linux系统宝塔面板,环境nginx、mysql、pm2管理器(它自带nodejs)
很多小伙伴工作很长时间了,对于MySQL的掌握程度却仅仅停留在表面的CRUD,对于MySQL深层次的原理和技术知识了解的少之又少,随着工作年限的不断增长,职场竞争力却是不断降低的。很多时候,出去面试时,被面试官吊打的现象成了家常便饭。
经常有小伙伴问我:MySQL 应该怎么学?小白如何入门?我在想,我当时是如何学习 MySQL 的,是否可以给到初学者几点建议,本篇文章,笔者将以自己的经验及认知,谈谈我对新手学习 MySQL 的建议。
MySQL数据库默认的数据库文件位于/var/lib/mysql下,有时候由于存储规划等原因,需要更改MySQL数据库的数据存储目录。下文总结整理了实践过程的操作步骤。
中安威士数据库动态脱敏系统(简称VS-DM),通过截获并修改数据库通讯内容,对数据库中的敏感数据进行在线的屏蔽、变形、字符替换、随机替换等处理,达到对用户访问敏感数据真实内容的权限控制。对存储于数据库中的敏感数据,通过脱敏系统,不同权限的用户将会得到不同结果展现。系统支持旁路代理和直路代理两种部署方式,具有性能卓越、配置灵活、使用简单、运行稳定等优势。能帮助客户降低生产库中敏感数据泄露的风险,减少开发、测试和数据交付过程中的数据泄漏,轻松满足隐私数据管理的合规性要求。
领取专属 10元无门槛券
手把手带您无忧上云