Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法获取锁异常:超过了spring sql的锁等待超时_Java_Mysql_Spring_Spring Jdbc - Fatal编程技术网

Java 无法获取锁异常:超过了spring sql的锁等待超时

Java 无法获取锁异常:超过了spring sql的锁等待超时,java,mysql,spring,spring-jdbc,Java,Mysql,Spring,Spring Jdbc,您好,我在这里得到了一个超时异常,因为标题说明,我没有找到任何相关的答案,因为这是唯一发生的事务。另外,当我去掉事务状态时,我的测试通过得很好。我的创作方法: @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW) public void createAMember(int memberid, String name, String address1, String address2, String tow

您好,我在这里得到了一个超时异常,因为标题说明,我没有找到任何相关的答案,因为这是唯一发生的事务。另外,当我去掉事务状态时,我的测试通过得很好。我的创作方法:

@Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW)
public void createAMember(int memberid, String name, String address1, String address2, String town, String contact_number, int bookallowance, double balance, boolean active) {
    String SQL = "insert into member (id,name,address1,address2,town,contact_number,book_allowance, balance, active) values (?,?,?,?,?,?,?, ?, ?)";
    getJdbcTemplate().update(SQL, new Object[] { memberid,name,address1,address2,town,contact_number,bookallowance,balance,active});
    System.out.println("Created Member Name = " + name + " memberid= " + memberid);
    //throw new libException();

}
我的实际测试:

@Test
@DatabaseSetup(value="classpath:dbEntries.xml", type=DatabaseOperation.CLEAN_INSERT)
public void testCreateMember() throws SQLException{
    MemberDaoJDBCTemplate memberDaoJDBCTemplate=(MemberDaoJDBCTemplate)autoWireContext.getBean("memberDaoJDBCTemplate");
    //int firstCount=memberDaoJDBCTemplate.countAllMembers();
    memberDaoJDBCTemplate.createAMember(id,Name, Address1,Address2,Town,Contact_number,book_allowance,Balance,active);
    System.out.println("kafka");
    //int secondCount=memberDaoJDBCTemplate.countAllMembers();
    //assertNotEquals(firstCount, secondCount); 
}
我的数据源bean:

<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/library"/>
    <property name="username" value="root"/></bean>


我是个新手,所以如果我能补充什么的话,请说,我已经努力了一段时间了,所以任何提示都很感激。Edit1:这是我正在运行的唯一测试,即createAMember

似乎我问了一个模糊或困难的问题,或者我问的方式不对。不管怎么说,在做了很多努力之后,我找到了这个问题的答案。我的原始代码实际上试图
CreateAMember
在这里:

public void createAMember(int-memberid、字符串名称、字符串地址1、字符串地址2、字符串城镇、字符串联系人号码、int-bookfacient、双平衡、布尔激活){
String SQL=“插入成员(id、姓名、地址1、地址2、城镇、联系人号码、帐簿津贴、余额、有效)值(?,,,,,,,,,,,,,?)”;
getJdbcTemplate().update(SQL,新对象[]{memberid,名称,地址1,地址2,城镇,联系电话,簿记津贴,余额,活动});
System.out.println(“创建的成员名称=“+Name+”memberid=“+memberid”);
//抛出新的libException();

结构必须更整齐,同时识别类型并将其整齐地放在准备好的语句中。下面的重新调整对我来说很有效。
PreparedStatementCreatorFactory psc=新的PreparedStatementCreatorFactory(SQL);
addParameter(新的SqlParameter(“id”,Types.INTEGER));
addParameter(新的SqlParameter(“name”,Types.VARCHAR));
addParameter(新的SqlParameter(“address1”,Types.VARCHAR));
addParameter(新的SqlParameter(“address2”,Types.VARCHAR));
addParameter(新的SqlParameter(“contact_number”,Types.VARCHAR));
addParameter(新的SqlParameter(“book_余量”,Types.INTEGER));
addParameter(新的SqlParameter(“balance”,Types.DOUBLE));
addParameter(新的SqlParameter(“active”,Types.BOOLEAN));
Object[]params=new Object[]{memberid,name,address1,address2,town,contact_number,bookfacility,balance,active};
钥匙夹=新生成的钥匙夹();
getJdbcTemplate().update(psc.newPreparedStatementCreator(params),holder);
System.out.println(“holder:+holder.getKey().toString());
System.out.println(“创建的记录名=“+Name+”ID=“+memberid”);

我最初的方法适用于简单的JDBC交互,这就是产生混淆的地方。事务需要如上所示的结构。我希望这篇文章可以在某些方面帮助像我这样无知的某某