使用hibernate操作sqlite的有时会出现database is locked

米哥_ 2016-04-23 04:15:35
使用hibernate操作sqlite的有时会出现database is locked。使用操作数据库的对象是hibernate自动生成的HibernateSessionFactory类提供的getSession方法。
下列两种情况会出现锁库的提示
1.当网站开启后,使用sqlite可视化操作工具SQLite Expert Personal 3去修改某些数据的时候database is locked。
2.开发过程中,修改了一些java代码,MyEclipse 自带的更新并运行的功能,让最新的代码部署在tomcat去,这个时候也会出现database is locked。如果暂停网站,再次运行部署就不会出现
求解决方法。
...全文
167 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
米哥_ 2016-04-26
  • 打赏
  • 举报
回复
找到其中的原因了,hibernate 启动后会保持 一个connection,而各路请求去操纵数据库的则是session,一个connection可以有很多session,session可以打开关闭且消耗比较少的资源,而connection则保持一个(hibernate配置的connection.pool_size最大连接数,默认是1),而如果经常打开关闭连接的话,将消耗较多的资源,hibernate则采用这样的机制提高性能,由于目前项目使用的数据库是文件数据库sqlite,并非mysql等大型能够支持多连接的数据库,所以就会出现database is locked这样的错误
米哥_ 2016-04-25
  • 打赏
  • 举报
回复
没人知道吗?

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧