事务未提交会通信mysql。根据相关资料查询,在于数据库事务的隔离级别,mysql默认下为readrepeatable,是不能读取未提交的内容的,将其设置为readuncommitted即可。
成都创新互联是一家专注于成都网站建设、网站制作与策划设计,高邮网站建设哪家好?成都创新互联做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:高邮等地区。高邮做网站价格咨询:18980820575
事务未提交会提示:Lock wait timeout exceeded; try restarting transaction等待超时。
在mysql查询中执行以下指令
select * from information_schema.innodb_trx
用kill 杀死对应的线程id即可
打开全日志后可以看。
打开的方法是:
1、5.0的版本
在配置文件的mysqld段中,增加
log=/var/log/mysql.log(或者其他的你想放日志的路径)
然后重启数据库
2、如果是5.1的版本
在配置文件的mysqld段中,增加
general_log_file=/var/log/mysql.log
然后重启数据库
5.1版本也可以不用重启,全局设置一下,方法是:
set global general_log=1;
set global general_log_file=/var/log/mysql.log;
打开日志后,查看未提交事务的方法为:
连接到数据库后,会分配一个连接id,然后追踪此连接id,找到此连接执行的所有sql,如果有begin,而没有commit,那么这个语句就是未提交的。
如何查询mysql事务未提交
打开全日志后可以看。
打开的方法是:
1、5.0的版本
在配置文件的mysqld段中,增加
log=/var/log/mysql.log(或者其他的你想放日志的路径)
然后重启数据库
2、如果是5.1的版本
在配置文件的mysqld段中,增加
general_log_file=/var/log/mysql.log
然后重启数据库
5.1版本也可以不用重启,全局设置一下,方法是:
set global general_log=1;
set global general_log_file=/var/log/mysql.log;
打开日志后,查看未提交事务的方法为:
连接到数据库后,会分配一个连接id,然后追踪此连接id,找到此连接执行的所有sql,如果有begin,而没有commit,那么这个语句就是未提交的。
如果不提交,需要rollback
解决的办法
innodb_lock_wait_timeout 锁定等待时间改大 my.ini文件: #innodb_lock_wait_timeout = 50默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,修改为 innodb_lock_wait_timeout = 500
如果MySQL存在没有提交的事务,那么这时候 AUTOCOMMIT 自动提交的参数应该是为 0 的。不过如果你通过其他的语言的MySQL驱动来操作的话,这些驱动一般都带有自动恢复 AUTOCOMMIT 的功能,在请求处理完成后会自动 ROLLBACK 没有处理的事务。