美文网首页
Unity sqlite手动开启BEGIN 和 COMMIT时u

Unity sqlite手动开启BEGIN 和 COMMIT时u

作者: 灰的狼 | 来源:发表于2020-05-07 10:51 被阅读0次

最近项目在untiy中使用sqlite作为玩家存档时出现一个问题,在android上当手动使用BEGIN 和 COMMIT批量提交时会报unable to open database file错误,而window上不会。网上查了一下都是这个问题是文件权限问题。
sqlite在开启批量提交或者大量操作的时候可能会用到临时文件,需要临时文件写的权限,而网上一般的说法是需要DB所在文件的目录的权限,所有顺着这个思路我用工具看了一下我自己的目录发现权限是有的!然后依然还是会提示打不开文件的错误。后来在另外一篇文章:https://www.cnblogs.com/hellocwh/p/5061805.html
找的了问题,其实是临时文件目录默认并不是DB所在的文件夹!!!
然后解决问题的方式是手动指定临时文件目录,执行下面的SQL:

PRAGMA temp_store_directory = 'your dir'

这个方式确实可以解决问题,然而官方并不建议用这个方式:http://www.sqlite.org/c3ref/temp_directory.html
那应该用什么方式修改临时目录的位置呢???
不过我找到了另外的方式来解决问题,那就是直接把这个临时文件放在内存中,SQL如下:

PRAGMA temp_store = 2

说明:https://www.sqlite.org/pragma.html#pragma_temp_store
对于一般的手机游戏用来记录玩家存档来说,把临时文件放在内存中应该是可以接受的,如果你的项目不能接受这种方式的话,就还是使用修改临时目录的方式吧。

相关文章

  • Unity sqlite手动开启BEGIN 和 COMMIT时u

    最近项目在untiy中使用sqlite作为玩家存档时出现一个问题,在android上当手动使用BEGIN 和 CO...

  • 数据库 | MySQL | 8. 事务

    begin:开启事务commit:确认/提交事务rollback:回滚事务

  • 事物

    BEGIN或START TRANSACTION;显示地开启一个事务; COMMIT;也可以使用COMMIT WOR...

  • Mysql性能优化-事务、锁和MVCC

    事务 mysql中如何开启事务: begin/start transaction --手工 commit/roll...

  • 数据库

    开启事务:备份。BEGIN TRANSACTION提交事务:删除备份。COMMIT TRANSACTION回滚:用...

  • MySQL ACID的底层实现

    MySQL事务实现 BEGIN TRANSACTION -- 开启事务 COMMIT -- 将执行结果提交 ROL...

  • 事务控制语句

    STARTTRANSACTION | BEGIN:显式地开启一个事务。 COMMIT:要想使用这个语句的最简形式,...

  • 咦,为什么我的事务回滚不了?

    MySQL 事务小伙伴们都懂,通过 begin 开启事务,通过 commit 提交事务或者通过 rollback ...

  • mysql

    事务控制语句: BEGIN 或 START TRANSACTION 显式地开启一个事务; COMMIT 也可以使用...

  • 2018-09-14PostgreSQL高级特性

    事务 在PostgreSQL中,开启一个事务需要将SQL命令用BEGIN和COMMIT命令包围起来。因此我们的银行...

网友评论

      本文标题:Unity sqlite手动开启BEGIN 和 COMMIT时u

      本文链接:https://www.haomeiwen.com/subject/ymsoghtx.html