Jfinal中使用SQLite事务时报错

发布于 2021-12-03 06:44:16 字数 2121 浏览 839 评论 4

实现程序还原数据库时的批量操作,数据库采用的是SQLite,使用事物时报错,程序代码

/**
	 * 开启事物的批量任务
	 * @param tableName
	 * @param sqlColumns
	 * @param sqlValues
	 * @param lists
	 */
	public static void batchTask(String tableName, String sqlColumns, String sqlValues, List<Record> lists){
		Db.tx(new IAtom() {
			@Override
			public boolean run() throws SQLException {
				try {
					String delSql = "delete from " + tableName;
					if(tableName.equals("sys_config")){
						delSql = "delete from sys_config where item not in("+SysConfig.remainItems+")";
					}
					Db.update(delSql);
					String sql = "insert into " + tableName + "(" + sqlColumns + ") values (" + sqlValues + ")";
					Db.batch(sql, sqlColumns, lists, 100);
				} catch (Exception e) {
					e.printStackTrace();
					
					return false;
				}
				return true;
			}
		});
		
	}



然后报了以下错误
java.sql.SQLException: database in auto-commit mode
	at org.sqlite.Conn.rollback(Conn.java:350)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)



2016-03-17 10:57:05.055 ERROR com.ddt.service.platform.BackupService - com.ddt.service.platform.BackupService
com.jfinal.plugin.activerecord.ActiveRecordException: java.sql.SQLException: SQLite supports only TRANSACTION_SERIALIZABLE and TRANSACTION_READ_UNCOMMITTED.
	at com.jfinal.plugin.activerecord.DbPro.tx(DbPro.java:655) ~[jfinal-1.9-bin-with-src.jar:na]
	at com.jfinal.plugin.activerecord.DbPro.tx(DbPro.java:680) ~[jfinal-1.9-bin-with-src.jar:na]
	at com.jfinal.plugin.activerecord.Db.tx(Db.java:440) ~[jfinal-1.9-bin-with-src.jar:na]



@JFinal 请波总指点迷津

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

凯凯我们等你回来 2021-12-03 18:25:51

设置隔离级别就可以解决,

Db.tx(Connection.TRANSACTION_SERIALIZABLE,new IAtom() {

梦中楼上月下 2021-12-03 18:20:05

升级到 jfinal 2.2

时光清浅 2021-12-03 18:11:28

跟踪了以下代码在这里catch里异常,不明白怎么回事: Dbpro.class 第642行 conn.setTransactionIsolation(transactionLevel); catch (Throwable t) {……} 这些

猫烠⑼条掵仅有一顆心 2021-12-03 16:03:27

异常抛出的问题?catch了异常,导致无法抛出,事务无法执行?

猜一下。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文