我试图在表上执行一些DDL并SHOW PROCESSLIST导致"等待表元数据锁定"消息.
如何找出尚未关闭的交易?
我正在使用MySQL v5.5.24.
我有一个hibernate和JSF2应用程序进入部署服务器并突然在异常中抛出org.hibernate.AssertionFailure:null id.我将立即提供堆栈跟踪和代码,但这里首先是四个重要问题:
这只发生在部署服务器上(在Windows Sever 2008上运行的Jboss和MySql).它不会发生在我的开发机器上(在Windoes 7 Pro上运行的Tomcat和MySql),也不会发生在暂存环境中(在Linux上运行的Jboss和MySql) .)
研究这个,似乎人们在尝试插入对象时会出现此错误.但是当我做一个简单的查询时,我得到了错误.(实际上,各种不同的查询随机地在几个页面上弹出错误.)
错误只会偶尔出现.如果我做Jboss重启它会消失,但一段时间后会返回.此外,它不一致,有些点击它在那里,而其他人则没有.即使它命中,当我对页面进行简单的刷新时它也会返回.
我正在使用c3p0(下面的配置)
知道发生了什么事吗?
代码详情:
这发生在地址对象上.这是完整的hbm:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.idex.auctions.model">
<class name="Address" table="address" lazy="true">
<id name="addressID" column="AddressID">
<generator class="native"/>
</id>
<property name="street" column="street"/>
<property name="city" column="city"/>
<property name="zip" column="zip"/>
<property name="state" column="state"/>
<property name="region" column="region"/>
<property name="country" column="country"/>
<many-to-one name="user"
class="com.idex.auctions.model.User"
column="userid"
unique="true"
cascade="save-update"/>
</class>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
Java类是直截了当的:
public class Address implements Serializable {
private static final long serialVersionUID = 7485582614444496906L;
private long addressID;
private …Run Code Online (Sandbox Code Playgroud) 我的MySQL数据库提供三个webapps作为存储后端.但是我最近遇到了错误"等待表元数据锁".它几乎一直发生,我不明白为什么.
mysql> show processlist
-> ;
+------+-----------+-----------------+------------+---------+------+---------------------------------+------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State | Info |
+------+-----------+-----------------+------------+---------+------+---------------------------------+------------------------------------------------------------------------------------------------------+
| 36 | root | localhost:33444 | bookmaker2 | Sleep | 139 | | NULL |
| 37 | root | localhost:33445 | bookmaker2 | Sleep | 139 | | NULL |
| 38 | root | localhost:33446 | bookmaker2 | Sleep | 139 | | NULL |
| 39 | root | localhost:33447 | …Run Code Online (Sandbox Code Playgroud) 我目前遇到一些长时间运行的事务,这些事务将锁锁定到我无法杀死的表中的单行。
Innodb_trx包含以下信息-特别注意thread_id = null;
select * from information_schema.innodb_trx\G
*************************** 2. row ***************************
trx_id: 153261728
trx_state: RUNNING
trx_started: 2019-10-02 10:05:42
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 5
trx_mysql_thread_id: 0
trx_query: NULL
trx_operation_state: NULL
trx_tables_in_use: 0
trx_tables_locked: 2
trx_lock_structs: 3
trx_lock_memory_bytes: 1136
trx_rows_locked: 1
trx_rows_modified: 2
trx_concurrency_tickets: 0
trx_isolation_level: READ COMMITTED
trx_unique_checks: 1
trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
trx_adaptive_hash_latched: 0
trx_adaptive_hash_timeout: 0
trx_is_read_only: 0
trx_autocommit_non_locking: 0
Run Code Online (Sandbox Code Playgroud)
和
show engine innodb status\G;
------------------
---TRANSACTION 153261728, ACTIVE (PREPARED) 27716 sec recovered trx
3 lock struct(s), heap …Run Code Online (Sandbox Code Playgroud)