Errors
Runtime errors
error | example | explanation |
---|---|---|
access | Tried to read files above directory, run system commands or failed usr/pwd | |
accp | Tried to accept an incoming TCP/IP connection but failed to do so | |
adict | d[::]:x |
Blocked assignment ('nyi ) |
arch | :test set til 100 -17!`:test |
Tried to load file of wrong endian format |
assign | cos:12 |
Tried to redefine a reserved word |
bad lambda | h{select x by x from x} |
lambda from an older version of kdb+ over IPC that no longer parses |
badtail | Incomplete transaction at end of file, get good (count;length) with -11!(-2;`:file) |
|
binary mismatch | Wrong process for code profiler | |
can't | Only commercially licensed kdb+ instances can encrypt code in a script | |
cast | s:`a`b; c:`s$`a`e |
Value not in enumeration |
close | content-length header missing from HTTP response | |
con | qcon client is not supported when kdb+ is in multithreaded input mode | |
cond | Even number of arguments to $ (until V3.6 2018.12.06) |
|
conn | Too many connections (1022 max) | |
Could not initialize ssl | (-26!)[] found SSL/TLS not enabled |
|
d8 | The log had a partial transaction at the end but q couldn’t truncate the file | |
decompression error at block b in f | Error signalled by underlying decompression routine | |
domain | til -1 |
Out of domain |
dup | `a`b xasc flip`a`b`a!() |
Duplicate column in table (since V3.6 2019.02.19) |
dup names for cols/groups | select a,a by a from t |
Name collision (since V4.0 2020.03.17) |
elim | ((-58?`3) set\:(),`a)$`a |
Too many enumerations (max: 57) |
enable secondary threads via cmd line -s only | \s 4 |
Command line enabled processes for parallel processing |
encryption lib unavailable | -36!(`:kf;"pwd") |
Failed to load OpenSSL libraries |
expected response | One-shot request did not receive response | |
failed to load TLS certificates | Started kdb+ with -E 1 or -E 2 but without SSL/TLS enabled |
|
from | select price trade |
Badly formed select statement |
hop | Request to hopen a handle fails; includes message from OS |
|
hwr | Handle write error, can't write inside a peach |
|
IJS | "D=\001"0:"0=hello\0011=world" |
Key type is not I , J , or S . |
insert | t:([k:0 1]a:2 3);`t insert(0;3) |
Tried to insert a record with an existing key into a keyed table |
invalid | q -e 3 |
Invalid command-line option value |
invalid password | -36!(`:kf;"pwd") |
Invalid keyfile password |
\l | Not a data file | |
length | ()+til 1 |
Arguments do not conform |
limit | 0W#2 |
Tried to generate a list longer than 240-1,
or serialized object is > 1TB,
or 'type if trying to serialize a nested object which has > 2 billion elements,
or Parse errors
|
load | Not a data file | |
loop | a::b::a |
Dependency loop |
main thread only | -36!(`:kf;"pwd") |
Not executed from main thread |
mismatch | ([]a:til 4),([]b:til 3) |
Columns that can't be aligned for R,R or K,K |
mlim | Too many nested columns in splayed tables. (Prior to V3.0, limited to 999; from V3.0, 251; from V3.3, 65530) | |
mq | Multi-threading not allowed | |
name too long | Filepath ≥100 chars (until V3.6 2018.09.26) | |
need zlib to compress | zlib not available | |
noamend | t:([]a:1 2 3) n:`a`b`c update b:{`n?`d;:`n?`d}[] from `t |
Cannot change global state from within an amend |
no append to zipped enums | V2:.z.zd:17 2 6 `:sym?`a`b V3: `:sym?`c |
Cannot append to zipped enum (from V3.0) |
no `g# |
{`g#x}peach 2#enlist 0 1 |
A thread other than the main q thread has attempted to add a group attribute to a vector. Seen with peach +secondary threads or multithreaded input queue |
noupdate | {a::x}peach 0 1 |
Updates blocked by the -b cmd line arg,
or reval code or a thread other than the main thread has attempted to update a global variable
when in peach +secondary threads or multithreaded input queue.
Update not allowed when using negative port number.
|
nosocket | Can only open or use sockets in main thread. | |
nyi | "a"like"**" |
Not yet implemented: it probably makes sense, but it’s not defined nor implemented, and needs more thinking about as the language evolves |
os | \foo bar |
Operating-system error or license error |
par | Unsupported operation on a partitioned table or component thereof | |
parse | Invalid syntax; bad IPC header; or bad binary data in file | |
part | Something wrong with the partitions in the HDB; or med applied over partitions or segments |
|
path too long | (`$":",1000#"a") set 1 2 3 |
File path ≥255 chars (100 before V3.6 2018.09.26) |
PKCS5_PBKDF2_HMAC | -36!(`:kf;"pwd") |
Library invocation failed |
pwuid | OS is missing libraries for getpwuid . (Most likely 32-bit app on 64-bit OS. Try to install ia32-libs.) |
|
Q7 | nyi op on file nested array | |
rank | +[2;3;4] |
Invalid rank |
rb | Encountered a problem while doing a blocking read | |
restricted | 0"2+3" |
in a kdb+ process which was started with -b cmd line. Also for a kdb+ process using the username:password authentication file, or the -b cmd line option, \x cannot be used to reset handlers to their default. e.g. \x .z.pg |
s-fail | `s#3 2 |
Invalid attempt to set sorted attribute. Also encountered with `s#enums when loading a database (\l db ) and enum target is not already loaded. |
splay | nyi op on splayed table | |
stack | {.z.s[]}[] |
Ran out of stack space. Consider using Converge \ / instead of recursion. |
step | d:`s#`a`b!1 2;`d upsert `c`d!3 4 |
Tried to upsert a step dictionary in place |
stop | User interrupt (Ctrl-c) or time limit (-T ) |
|
stype | '42 |
Invalid type used for Signal |
sys | {system "ls"}peach 0 1 |
Using system call from thread other than main thread |
threadview | Trying to calc a view in a thread other than main thread. A view can be calculated in the main thread only. The cached result can be used from other threads. | |
timeout | Request to hopen a handle fails on a timeout; includes message from OS |
|
TLS not enabled | Received a TLS connection request, but kdb+ not started with -E 1 or -E 2 |
|
too many syms | Kdb+ currently allows for ~1.4B interned symbols in the pool and will exit with this error when this threshold is reached | |
trunc | The log had a partial transaction at the end but q couldn’t truncate the file | |
type | til 2.2 |
Wrong type. Also see 'limit |
type/attr error amending file | Direct update on disk for this type or attribute is not allowed | |
u-fail | `u#2 2 |
Invalid attempt to set unique or parted attribute |
unmappable | t:([]sym:`a`b;a:(();())) .Q.dpft[`:thdb;.z.d;`sym;`t] |
When saving partitioned data each column must be mappable. () and ("";"";"") are OK |
unrecognized key format | -36!(`:kf;"pwd") |
Master keyfile format not recognized |
upd | Function upd is undefined (sometimes encountered during -11!`:logfile ) or license error |
|
utf8 | The websocket requires that text is UTF-8 encoded | |
value | No value | |
vd1 | Attempted multithread update | |
view | Tried to re-assign a view to something else | |
-w abort | malloc hit -w limit or \w limit |
|
-w init via cmd line | Trying to allocate memory with \w without -w on command line |
|
wsfull | 999999999#0 |
malloc failed, or ran out of swap (or addressability on 32-bit). The params also reported are intended to help KX diagnose when assisting clients, and are subject to change. |
wsm | 010b wsum 010b |
Alias for nyi for wsum prior to V3.2 |
XXX | delete x from system "d";x |
Value error (XXX undefined) |
System errors
From file ops and IPC
error | explanation |
---|---|
Bad CPU Type | Tried to run 32-bit interpreter in macOS 10.15+ |
XXX:YYY |
XXX is from kdb+, YYY from the OS |
XXX
from addr, close, conn, p(from -p
), snd, rcv or (invalid) filename, e.g. read0`:invalidname.txt
Parse errors
On execute or load
error | example | explanation |
---|---|---|
[({])}" |
"hello |
Open ([{ or " |
branch | a:"1;",65024#"0;" value "{if[",a,"]}" |
A branch (if ;do ;while ;$[.;.;.] ) more than 65025 byte codes away (255 before V3.6 2017.09.26) |
char | value "\000" |
Invalid character (watch out for non-breaking spaces in copied expressions) |
globals | a:"::a"sv string til 111; value"{a",a,"::0}" |
Too many global variables |
limit | a:";"sv string 2+til 241; value"{",a,"}" |
Too many constants, or limit error |
locals | a:":a"sv string til 111; value"{a",a,":0}" |
Too many local variables |
params | f:{[a;b;c;d;e;f;g;h;e]} |
Too many parameters (8 max) |
License errors
On launch
error | explanation |
---|---|
{timestamp} couldn't connect to license daemon | Could not connect to KX license server (kdb+ On Demand) |
cores | The license is for fewer cores than available |
cpu | The license is for fewer CPUs than available |
exp | License expiry date is prior to system date |
host |
The hostname reported by the OS does not match the hostname or hostname-pattern in the license.
If you see 255.255.255.255 in the kdb+ banner, the machine almost certainly cannot resolve its hostname to an IP address,
which will cause a 'host error.
|
k4.lic |
k4.lic file not found, check contents of environment variables
[QHOME ../learn/install.md#step-2-put-kdb-in-qhome) and
QLIC
|
os | Wrong OS or operating-system error (if runtime error) |
srv | Client-only license in server mode |
upd | Version of kdb+ more recent than update date, or the function upd is undefined (sometimes encountered during -11!`:logfile ) |
user | Unlicensed user |
wha | System date is prior to kdb+ version date |
wrong q.k version | q and q.k versions do not match |
License-related errors are reported with the prefix licence error:
since V4.0 2019.10.22.
Handling errors
Use system command \
(abort) to clear one level off the execution stack.
Keyword exit
terminates the kdb+ process.
Use hook .z.exit
to set a callback on process exit.
Use Signal to signal errors.
Use Trap and Trap At to trap errors.