spring+hibernate在MYSQL下的一些问题
今天在帮朋友调试一个关于多线程访问同一张表引起的Lock wait timeout exceede的问题,感觉引起的原因有:
1,没有进行优化,尽量避免多线程
2,根据它后面报的异常,提醒我可以Hibernate 的Session没有使用得当,(也是我解决的方案)
3,用synchronized修饰更新表的函数
估计是原来程序在修改完该表时立刻进行了插入操作导致的,
所以我在更新后进行getHibernateTemplate().flush();
最后,在插入操作(save())时,原本他是又创建了一个新的DAO,再将记录插入到数据库中,而因为是同一个DAO,我将其删掉,直接调用save(),这个问题也就解决了!
调试之前:
public boolean createCurrentSL(Users u){
try {
String queryString = "update Appendlist set isCurrent=? where isCurrent='1' and uid=?";
Object[] objs=new Object[2];
objs[0]=false;
objs[1]=u.getUid();
getHibernateTemplate().bulkUpdate(queryString,objs);
ApplicationContext factory=new ClassPathXmlApplicationContext("applicationContext.xml");
IAppendlistDAO alDAO=(IAppendlistDAO)factory.getBean(IAppendlistDAO.BEAN_NAME);
Calendar cal=Calendar.getInstance();
if(cal.get(Calendar.MONTH)!=Calendar.DECEMBER)
cal.set(Calendar.MONTH, Calendar.MONTH+1);
else
cal.set(Calendar.MONTH, Calendar.JANUARY);
int max=cal.getActualMaximum(Calendar.DAY_OF_MONTH);
for(int i=1;i<=max;i++){
Appendlist al=new Appendlist();
al.setUsers(u);
al.setMonthday(i);
al.setIsCurrent(true);
al.setAlDemo("ABSENT");
alDAO.save(al);
}
return true;
} catch (RuntimeException re) {
System.out.println("createCurrentSL failed");
re.printStackTrace();
return false;
}
}
调试之后:
public boolean createCurrentSL(Users u){
try {
String queryString = "update Appendlist set isCurrent=? where isCurrent='1' and uid=?";
Object[] objs=new Object[2];
objs[0]=false;
objs[1]=u.getUid();
getHibernateTemplate().bulkUpdate(queryString,objs);
getHibernateTemplate().flush();
Calendar cal=Calendar.getInstance();
if(cal.get(Calendar.MONTH
相关文档:
过去的一个月,我的工作重心都在合服模块的测试。颇有一些收获。
此次大量和mysql打交道,对产品的数据存储有了比较全面的掌握。并促使和执行了db的表结构和属性的检查。合服投放后,暂未发现因错误数据导致的bug或事故。
并在测试初期就关注和检测性能指标,促使程序做了一次性能测试;对投放时的风险增强了预防和控制。 ......
方法一
使用phpmyadmin,这是最简单的了,修改mysql库的user表,不过别忘了使用PASSWORD函数。
方法二
使用mysqladmin,这是前面声明的一个特例。
mysqladmin -u root -p password mypasswd
输入这个命令后,需要输入root的原密码,然后root的密码将改为mypasswd。
把命令里的root改为你的用户名,你就可以改你 ......
java与mysql乱码的问题
java与mysql乱码的问题
关键字: java与mysql乱码的问题
解决方法一:(最重要的一种方法)
你看下my.ini,有无
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8
然后建立表时,也要用(比如)
DROP TABLE IF ......
在phpmyadmin的根目录下建立config.inc.php
写入如下代码:
<?php
//phpmyadmin 配置文件
//本地MySQL数据库
$i=1;
$cfg['Servers'][$i]['host'] =
'localhost';
$cfg['Servers'][$i]['user'] ......
1,忘记root密码,如果能还能进入mysql且还有mysql库的权限,那么就直接执行 update user set password=password(‘XXX’) where user=’root’ and host=’XX’; flush privileges; 即可.如果不能进入mysql,需要有mysql启动的权限,在启动mysql的时候加上--skip-grant-tables选项,此时进入mysql无需密码,再重复上述操 ......