假设我们有一个名为test
的表create table test
(
id int not null,
primary key (id)
) engine = innodb;
和sql文件1.sql
start transaction;
insert into test(id) values(1);
select sleep(100);
select * from test;
commit;
我们使用mysql客户端工具运行1.sql
mysql -uroot < 1.sql
它将阻止&#34;选择睡眠(100)&#34;声明。如果我按&#34; Ctrl-C&#34;,只有mysql客户端 杀死当前语句并继续执行左语句。作为结果, 插入将提交。有没有一种方法可以在没有执行的情况下终止sql文件的执行 左边的陈述?
PS:我试过&#34; Ctrl + \&#34;中止mysql客户端,这将使查询仍然执行 在服务器端,因为不发送 kill查询
答案 0 :(得分:0)
您可以打开第二个连接,使用SHOW PROCESSLIST
检查要终止的会话,然后使用SQL KILL
命令终止它。
另见http://dev.mysql.com/doc/refman/5.6/en/kill.html
和http://dev.mysql.com/doc/refman/5.6/en/show-processlist.html
答案 1 :(得分:0)
它应该回滚,因为事务尚未提交。(通过杀死第三个查询)。