Write operations are not allowed in read-only mode (FlushMode.MANUAL) 的解决办法

本文针对在使用SSH架构项目时遇到的Writeoperationsarenotallowedinread-onlymode(FlushMode.MANUAL)异常,提供了两种解决方案:一是修改FlushMode的值为COMMIT/AUTO;二是删除事务定义中的“只读”标记。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


问题描述:

    近期根据需求架构了一个小型项目,由于是公司内部使用,没有考虑三高(即高并发、高可用、高扩展),所以使用了SSH(Spring\Struts\Hibernate)进行开发的,主体架构完成后,进行的第一个操作就遇到了一个问题,内容如下:

org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction definition.


如下图所示:




问题分析:

    在我的Web.xml中配置了 “ OpenSessionInViewFilter ”过滤器,主要用来解决 Hibernate 在项目中出现的懒加载问题(当请求来的时候,才开启事物,请求结束后立即关闭事物,默认为手动开始,我们需要设置其为提交/自动的),如下图:


    根据错误信息提示:开启“ OpenSessionInViewFilter ”这个过滤器的时候FlushMode 就已经被默认设置为了 MANUAL,如果 FlushMode 是 MANUAL,在操作过程中 hibernate 会将事务设置为 readonly,在操作数据时就会出现如上的错误。


解决方案:

其实在异常信息的后面已经给出了两解决方案,如下:

方案一:

修改 FlushMode 的值为 COMMIT/AUTO,在项目的核心配置文件Web.xml中添加内容:

		<init-param>
			<param-name>flushMode</param-name>
			<param-value>AUTO</param-value>
		</init-param>


如下图:



方案二:

从事务定义中删除“ 只读 ” 标记,在Spring的核心配置文件中,找到 </tx:advice> 的节点,如下图:



    在该节点中找到操作的事物定义,直接删除掉即可,如:新增则删掉新增的事务定义,修改则删掉修改的事务定义即可。










好了,关于 Write operations are not allowed in read-only mode (FlushMode.MANUAL)  的解决办法 就写到这儿了,如果还有什么疑问或遇到什么问题欢迎扫码提问,可以给我留言。
歇后语:“ 共同学习,共同进步 ”,也希望大家多多关注CSND的IT社区。

<think>好的,我现在需要解决用户的问题:“White spaces are not allowed in the ESP-IDF Tools path.”。用户可能是在安装或配置ESP-IDF开发环境时遇到了路径包含空格的错误提示。 首先,我得回想一下ESP-IDF的相关知识。ESP-IDF是乐鑫为ESP32系列芯片提供的开发框架,安装过程中需要设置工具链的路径。通常,这类开发工具对路径中的空格比较敏感,尤其是像Windows系统下的Program Files这样的默认安装路径,里面包含空格,可能导致问题。 接下来,用户的问题明确指出工具路径中不允许有空格。这意味着用户可能将ESP-IDF或相关工具安装在了含有空格的目录下,比如“C:\Program Files\...”,而这样的路径会被系统或脚本错误解析,导致安装失败或运行异常。 解决方案的第一步应该是建议用户检查当前的安装路径,确认是否存在空格。如果有,需要将整个ESP-IDF工具目录移动到一个不含空格的路径下,例如“C:\esp-idf”或用户主目录下的某个路径。同时,用户需要更新环境变量,比如IDF_TOOLS_PATH,确保指向新的路径。 此外,可能还需要考虑其他相关配置,比如在安装脚本或配置文件中指定正确的路径。对于使用Windows的用户,可能还需要注意反斜杠的转义问题,或者在命令行中使用引号包裹路径。不过,根据错误提示,最根本的解决办法还是避免路径中的空格。 还需要提醒用户,修改路径后可能需要重新运行安装脚本或重新配置环境,以确保所有工具都能正确识别新的路径。如果用户使用的是Visual Studio Code或其他IDE,可能需要更新工作区设置中的相关路径。 最后,应该给出具体的步骤示例,帮助用户一步步操作。例如,移动文件夹,设置环境变量,重新安装工具等。同时,提醒用户在操作前备份数据,避免意外丢失。</think>关于 "White spaces are not allowed in the ESP-IDF Tools path" 错误的解决方案: **问题原因:** ESP-IDF 工具链路径包含空格(如 `C:\Program Files\...`),而 ESP-IDF 的安装脚本无法解析带空格的路径。 **解决步骤:** 1. 📂 检查当前路径 - 打开 ESP-IDF 安装目录 - 确认路径是否包含空格(如 `Program Files`, `My Documents` 等) 2. 🚚 迁移安装目录 ```bash # 错误示例路径 C:\Users\Your Name\esp-idf # 包含空格 D:\Program Files\esp-idf # 包含空格 # 正确示例路径 C:\esp-idf D:\ESP32\esp-idf %USERPROFILE%\esp-idf # Windows用户目录 ``` 3. 🔧 修改环境变量(以 Windows 为例): - 打开系统属性 → 高级 → 环境变量 - 修改或新建 `IDF_TOOLS_PATH` 变量 - 设置为不含空格的路径(如 `C:\esp-idf\tools`) 4. ⚡ 重新安装工具链 ```bash # 在 ESP-IDF 安装目录执行 install.bat # 或 export.sh ``` 5. 💻 验证安装 ```bash get_idf # 进入开发环境 idf.py set-target esp32 # 测试命令 ``` **注意:** - macOS/Linux 用户建议使用 `~/esp-idf` 路径 - 避免使用系统保护目录(如 `Program Files`) - 修改路径后需重新运行安装脚本 - 已创建的项目无需移动,只需确保 IDF 路径正确 **常见问题延伸:** 若使用 VSCode 插件,需同步修改: 1. 打开 `.vscode/settings.json` 2. 更新 `idf.espIdfPath` 路径 3. 重启 IDE
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TechBro华仔

日拱一卒无有尽,功不唐捐终入海

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值