点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我正在尝试为我的一个实体实施一些其他验证。 我注册了以下代码:
this.before('UPDATE','Activities',async req => { const db = cds.connect.to('db'); const service = new ActivityService(db); ErrorProcessor.processMsgs(req,等待service.updateCommand(req.data)); });
在该方法updateCommand的一边,我需要从数据库检索一些记录。 例如。 像这样的东西:
const {活动} = this._db.entities; const结果=等待 this._db.read(Activities).where({ID:ID});
当我尝试执行任何查询时,出现以下错误:
从池中请求客户端超时。 最大池大小为1,当前池大小为1。增加" acquireTimeoutMillis"以延长等待时间,或增加" max"以创建更多客户端。
似乎无法获得到SQLite DB的客户端连接。 为什么会这样呢? 我无法执行对sqlite DB的附加请求,这是我做错了什么? 当然,这应该是可能的。 我正在为CREATE操作做类似的事情,没有问题。
嗨,马丁,
仅通过错误消息,我猜是:
如果使用sqlite,默认情况下,数据库连接池只有一个连接。 当您尝试读取"活动"时,会从池中请求一个新的连接并超时,因为传入的请求已经先请求了一个。
请通过在初始化时提供请求上下文来确保为传入请求加入现有事务( https://cap.cloud.sap/docs/node.js/api#cds-transaction )。
最诚挚的问候,
Johannes
哦,就是这样。 这是一个相当昂贵的课程,但我应该记住。
谢谢
也许使用交易环境解决了您的问题。
嗨,马丁,
请尽可能在公共Git中共享您的项目 资料库。 如果其他人可以确认此问题,则应该在 cap-community/issues 上引发事件。
< p> CU格雷戈尔
一周热门 更多>