当我使用sym.q和feed.q启动tick.q时,文件提供如下:
q tick.q sym -p 5010
q feed.q
Github链接:https://github.com/KxSystems/cookbook/tree/master/start/tick, https://github.com/KxSystems/kdb-tick
tickerplant进程在每次更新时都会输出'length
错误,这通常在传递的元素数量不正确时发生:https://code.kx.com/wiki/Errors
我怀疑当Feed进程调用.u.upd
时会发生这种情况有关如何解决此问题的任何建议吗?
答案 0 :(得分:1)
在命令行中输入\e 1
将暂停执行并运行调试器,以便您查看失败的内容并查询应该帮助查明导致问题的变量。
有关此处调试的详情https://code.kx.com/q/ref/debug/
答案 1 :(得分:0)
如果您使用KX的普通香草标签设置,则没有理由显示该错误。
此外,我认为您需要以feed.q -t 200
开始Feed,否则您将无法获得数据。
通常,当表架构不匹配时会出现'length
错误。因此,如果您拥有sym.q
文件(并且已正确加载),则不应该出现此问题。
只是为了确认这是您目录的结构:
.
├── feed.q
├── README.md
├── tick
│ ├── r.q
│ ├── sym.q
│ └── u.q
└── tick.q
sym.q
文件包含您的表架构。如果您在Feedhandler中更改了某些内容,则sym.q
中的表架构必须与该更改匹配(即,如果您在Feed中添加了一列,则还必须在该列的表中添加一个持有者)
答案 2 :(得分:0)
在某个端口(9999)上打开一个新的q会话,在那里添加您的架构定义,并将insert
定义为.u.upd
或类似的东西:
.u.upd:{[t;d]
.test.t:t;
.test.d:d;
t upsert d
}
现在将您的Feed指向此q会话并传输一些数据;这将使您能够在出现错误时分析测试变量。