两个疑问

两个疑问

一、问题描述

本章开篇老师说:“比如,将笔记本中的MySQL数据,导入到台式机的MySQL里。直接拷贝覆盖数据目录,粗暴危险。两者创建的用户并不相同,会导致台式机的目录账户被覆盖丢失。

没有明白:既然用户不相同,为啥还是覆盖呢?比如,在电脑中复制文件,不都是文件名相同,才会覆盖替换吗?

二、问题描述

课堂上,我感觉下面的错误演示跟正确演示中后两步挺像的,都是事务A提交了,为什么两个的结果不一样的?

请老师解答。谢谢!


相关代码如下:

1.错误的演示

- SQL面板1:

 START TRANSACTION ;
 UPDATE t_emp SET sal=1;
 COMMIT;

执行上述语句:开启事务,修改数据,提交数据成功:

- SQL面板2:

 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ; # 既然能重复读取结果一致,只能读取到事务开始之前
 START TRANSACTION ;
 SELECT empno,ename,sal FROM t_emp;

怎么读到了事务A 提交以后的结果?收到了其他事务的影响?

8.7023

2.正确的演示

- SQL面板1:

 START TRANSACTION ;   # 事务开启
 UPDATE t_emp SET sal=1;

只开启事务、修改数据,不提交

- SQL面板2:

 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;
 START TRANSACTION ;
 SELECT empno,ename,sal FROM t_emp;

查询的是:事务A的原始数据:

8.7024

- SQL面板1:

 COMMIT;   # 提交

- SQL面板2:

 SELECT empno,ename,sal FROM t_emp;

重新查询下,发现:查询的仍是事务A的原始数据:

8.7025

3.小结

不管事务A你提不提交,对于事务B来说,查询的都是A之前的原始数据。


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小黑 2022-08-20 17:12:11

同学你好,

1.mysql中有一个数据表用于存储和管理mysql的用户(在课程学习中,我们使用的是root账户,而实际开发时并不会操作root账户,而是具有特定权限的账户),如果将笔记本电脑中的mysql用户直接复制粘贴到台式电脑中,那么就会将台式机电脑中的用户覆盖掉,就会导致台式电脑中的用户信息丢失。

2.在错误的演示中的 SQL面板1中已经将事务中的sql语句COMMIT,也就是修改后的数据已经持久化到数据库中,由于在COMMIT前在SQL面板2中并没有查询数据,导致在COMMIT之后在SQL面板2中的事务中查询到的是数据库中的数据。

3.在正确的演示中由于SQL面板1中的事务中并没有COMMIT,在SQL面板2查询到的数据是数据库中的数据(COMMIT前的数据),SQL面板1 COMMIT;之后在SQL面板2中查询的数据一直是SQL面板2中事务中的数据(undo日志)。
祝学习愉快!

  • 提问者 Jerry_Zheng24 #1

    老师您好:

    1.请问笔记本电脑中的mysql用户,与台式机电脑中的用户是同一个开发者账户,还是不同的?如果是同一个,直接复制粘贴确实是会导致覆盖;如果不是同一个呢,一个电脑只能登录一个开发者账户吗?

    2-3.如果切换到业务场景进行类比,是不是这样:

        错误的演示:商家涨价后,顾客才下的单;

       正确的演示:商家涨价前,顾客下单;商家涨价了,顾客仍按原价支付。


    请老师解答~


    2022-08-20 17:31:36
  • 好帮手慕小黑 回复 提问者 Jerry_Zheng24 #2

    同学你好,
    1.  笔记本电脑的mysql用户和台式电脑的用户,如果用户名相同也不是同一个用户,笔记本电脑中的mysql用户名可能只是和台式电脑的mysql用户名相同,但是用户名所对应的其他信息可能不同,直接复制粘贴,会造成数据的丢失。
    在一台电脑中可以登录多个mysql用户;
    2.  同学的理解是正确的。
    祝学习愉快!

    2022-08-20 18:30:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师