请求池中的客户端超时

2020-08-18 09:53发布

         点击此处--->   EasySAP.com群内免费提供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操作做类似的事情,没有问题。

         点击此处--->   EasySAP.com群内免费提供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操作做类似的事情,没有问题。

付费偷看设置
发送
4条回答
土豆飞人
1楼 · 2020-08-18 10:29.采纳回答

嗨,马丁,

仅通过错误消息,我猜是:

如果使用sqlite,默认情况下,数据库连接池只有一个连接。 当您尝试读取"活动"时,会从池中请求一个新的连接并超时,因为传入的请求已经先请求了一个。

请通过在初始化时提供请求上下文来确保为传入请求加入现有事务( https://cap.cloud.sap/docs/node.js/api#cds-transaction )。

最诚挚的问候,

Johannes

哎,真难
2楼-- · 2020-08-18 10:12

哦,就是这样。 这是一个相当昂贵的课程,但我应该记住。

谢谢

宇峰Kouji
3楼-- · 2020-08-18 10:29

也许使用交易环境解决了您的问题。

xfwsx85
4楼-- · 2020-08-18 10:25

嗨,马丁,

请尽可能在公共Git中共享您的项目 资料库。 如果其他人可以确认此问题,则应该在 cap-community/issues 上引发事件。

< p> CU
格雷戈尔

一周热门 更多>