解决MySql8.0 查看事务隔离级别报错的问题

目录
  • MySql8.0 查看事务隔离级别报错
    • 问题
    • 命令更改为
  • MySQL的事务隔离级别(包含mysql8.0+设置与查看)
    • 一、事务的基本要素(ACID)
    • 二、事务的并发问题
    • 三、MySQL事务隔离级别 事务的隔离级别分为
    • 四、数据库设置
    • Mysql 8.0+ 查询数据库事务隔离级别

MySql8.0 查看事务隔离级别报错

问题

数据库查看事务隔离级别

select @@global.tx_isolation,@@tx_isolation;

报错:

mysql> select @@global.tx_isolation,@@tx_isolation;
ERROR 1193 (HY000): Unknown system variable 'tx_isolation'
mysql> select @@global.tx_isolation,@@tx_isolation;
ERROR 1193 (HY000): Unknown system variable 'tx_isolation'

我用的mysql8.0版本。tx_isolation在8.0版本更改为global.transaction_isolation

命令更改为

select @@global.transaction_isolation,@@transaction_isolation;

MySQL的事务隔离级别(包含mysql8.0+设置与查看)

MySQL的四种事务隔离级别

一、事务的基本要素(ACID)

1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。

2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。

3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。

4、持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。

二、事务的并发问题

1、脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据

2、不可重复读:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致。

3、幻读:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。

小结:不可重复读的和幻读很容易混淆,不可重复读侧重于修改,幻读侧重于新增或删除。解决不可重复读的问题只需锁住满足条件的行,解决幻读需要锁表

三、MySQL事务隔离级别 事务的隔离级别分为

未提交读(read uncommitted)、已提交读(read committed)、可重复读(repeatable read)、串行化(serializable)

四种级别由低到高依次为Read uncommitted 、Read committed 、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。

: 可能出现 : 不会出现

未提交读

A事务已执行,但未提交;B事务查询到A事务的更新后数据;A事务回滚;—出现脏数据

已提交读

A事务执行更新;B事务查询;A事务又执行更新;B事务再次查询时,前后两次数据不一致;—不可重复读

可重复读

A事务无论执行多少次,只要不提交,B事务查询值都不变;B事务仅查询B事务开始时那一瞬间的数据快照;—幻读

串行化

不允许读写并发操作,写执行时,读必须等待;

四、数据库设置

//查看当前事物级别(mysql8.0以上版本不适用, 请看下面):
SELECT @@tx_isolation;

//设置mysql的隔离级别:
set session transaction isolation level;设置事务隔离级别

//设置read uncommitted级别:
set session transaction isolation level read uncommitted;

//设置read committed级别:
set session transaction isolation level read committed;

//设置repeatable read级别:
set session transaction isolation level repeatable read;

//设置serializable级别:
set session transaction isolation level serializable;

Mysql 8.0+ 查询数据库事务隔离级别

根据慕课网课程中的方法,查询事务隔离级别使用:

select @@tx_isolation;

我在sequal pro中,却提示错误:Unknown system variable ‘tx_isolation'

查询了官方文档,在8.0+就已经抛弃了这样的查询方法,

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html

在MySQL 8.0.3 中,该变量已经被 transaction_isolation 替换了。

最新的查询方法有多种,下面提供2种:

1、select @@transaction_isolation;

2、show variables like ‘transaction_isolation';

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • MySQL查看和修改事务隔离级别的实例讲解

    查看事务隔离级别 在 MySQL 中,可以通过show variables like '%tx_isolation%'或select @@tx_isolation;语句来查看当前事务隔离级别. 查看当前事务隔离级别的 SQL 语句和运行结果如下: mysql> show variables like '%tx_isolation%'; +---------------+-----------------+ | Variable_name | Value | +---------------+--

  • Mysql事务隔离级别之读提交详解

    查看mysql 事务隔离级别 mysql> show variables like '%isolation%'; +---------------+----------------+ | Variable_name | Value | +---------------+----------------+ | tx_isolation | READ-COMMITTED | +---------------+----------------+ 1 row in set (0.00 sec) 可以看到

  • mysql的事务,隔离级别和锁用法实例分析

    本文实例讲述了mysql的事务,隔离级别和锁用法.分享给大家供大家参考,具体如下: 事务就是一组一起成功或一起失败的sql语句.事务还应该具备,原子性,一致性,隔离性和持久性. 一.事务的基本要素 (ACID) 1.原子性:事务开始后,所有的操作,要么全部成功,要么全部失败,不可能处于中间状态,事务是一个不可分割的整体,就像原子一样. 2.一致性:事务开始前和结束后,数据库的完整性约束没有破坏,A向B转账,A扣了钱,但B却没到账. 3.隔离性:同时发生的事务(并发事务)不应该导致数据库处于不一致

  • MySQL数据库事务隔离级别介绍(Transaction Isolation Level)

    数据库隔离级别有四种,应用<高性能mysql>一书中的说明: 然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 复制代码 代码如下: #可选参数有:READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE. [mysqld] transaction-isolation = REPEATABLE-READ 这里全局默认是REPEATABLE-READ,其实MySQL本来默认也是这个级别

  • 解决MySql8.0 查看事务隔离级别报错的问题

    目录 MySql8.0 查看事务隔离级别报错 问题 命令更改为 MySQL的事务隔离级别(包含mysql8.0+设置与查看) 一.事务的基本要素(ACID) 二.事务的并发问题 三.MySQL事务隔离级别 事务的隔离级别分为 四.数据库设置 Mysql 8.0+ 查询数据库事务隔离级别 MySql8.0 查看事务隔离级别报错 问题 数据库查看事务隔离级别 select @@global.tx_isolation,@@tx_isolation; 报错: mysql> select @@global

  • 解决MySQL8.0安装第一次登陆修改密码时出现的问题

    下面给大家介绍下mysql 8.0.16 初次登录修改密码 mysql数据库初始化后初次登录需要修改密码 初次登录会碰到下面这个错误 ql> alter user root identified by 'password'; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 需要使用下面的命令来修改密码 mysql> alter

  • 解决MySQL8.0时区的问题步骤

    软件版本 Windows:Windows10 MySQL:mysql-8.0.16-winx64.zip 问题描述 java将当前时间保存到MySQL数据库时,MySQL中的时间不正确 问题分析 原因一:java数据库连接使用UTC时区(世界标准时间),即serverTimezone=UTC url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&

  • 解决mysql8.0.19  winx64版本的安装问题

    MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.目前MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库. 这篇文章重点给大家介绍解决mysql8.0.19  winx64版本的安装问题,具体内容如下所示: 下载地址:https://dev.mysql.com/downloads/mysql/,我下载了上面的187.8M的

  • 解决MySQL8.0 输入无误仍然提示Access denied问题

    近些时间在开始学MySQL,安装挺顺利的,按照网上现成的教程就能安装成功. 但是,在输入 mysql -uroot -p 再输入密码时,遇到了这个情况 Access denied for user 'root'@'localhost' (using password: YES) 在网上找了很多解决办法,但是基本只有一个,在.ini文件中的mysqld条目添加 skip-grant-tables 然后重启服务器,再按照刚刚的步骤再来一遍(最后不输入密码),但是还是一条语句把我拦了下来 Access

  • Python3连接Mysql8.0遇到的问题及处理步骤

    最近在使用Python开发系统,需连接mysql数据库,我用的是Python3连接MySQL8.0,其中老是报错以下问题: 网上给了各种各样的方法,大多是通过各种方式修改密码. 最简单的方法是更换了root密码的认证方式解决的,新版mysql使用的caching_sha2_password,换成mysql_native_password我就可以连上了. 步骤是在cmd命令行连接mysql(管理员身份运行cmd)  进入cmd的命令行之后,输入cd+bin目录的地址,访问mysql的bin目录.通

  • MySQL8.0.27安装过程中卡在Initializing Database中并报错的解决

    目录 报错信息如下: 解决方案: 附:清理注册表的方法 本文主要介绍了MySQL8.0.27安装过程中卡在Initializing Database中并报错的解决,具有一定的参考价值,具体如下: 报错信息如下: Beginning configuration step: Initializing database (may take a long time)Attempting to run MySQL Server with --initialize-insecure option…Start

  • 浅谈mysql8.0新特性的坑和解决办法(小结)

    一.创建用户和授权 在mysql8.0创建用户和授权和之前不太一样了,其实严格上来讲,也不能说是不一样,只能说是更严格,mysql8.0需要先创建用户和设置密码,然后才能授权. #先创建一个用户 create user 'hong'@'%' identified by '123123'; #再进行授权 grant all privileges on *.* to 'hong'@'%' with grant option; 如果还是用原来5.7的那种方式,会报错误: grant all privi

  • 解决Windows环境下安装 mysql-8.0.11-winx64 遇到的问题

    下载mysql安装包,我的是下载mysql-8.0.11-winx64,解压到你想安装的目录下,然后配置环境(window环境下,mac本还没试过), 1.首先,配置环境:右击此电脑->属性->高级系统设置->环境变量->path->新建 ,然后将自己的路径添加进去(例如我目录:F:\mysql\mysql-8.0.11-winx64),除此之外还要看解压的压缩包内是否有my.ini文件或者my-default.ini文件,如果没有需要自己写一个在根目录下,默认的配置信息如下

  • Win10系统安装MySQL8.0.13遇到的问题及解决方法

    操作系统:Window10 MySQL版本:8.0.13-winx64 安装步骤比较简单,本文不再啰嗦,以下是runoob提供的安装说明: http://www.runoob.com/mysql/mysql-install.html 安装后遇到的问题: 一:Access denied for user 'root'@'localhost' (using password:YES) 解决方式: 1.以管理员的身份进入到cmd命令窗口,并cd到MySQL安装路径的bin目录下. 2.关闭MySQL服

随机推荐