我是Aerospike的新手......!
当我试图将记录插入数据库时,它显示超时错误,如...
aql> INSERT INTO test.student (pk, emp_id, name, age) VALUES ('k003', 'BP003', 'Sai', 25)
Error: (9) Client timeout: timeout=1000 iterations=1 failedNodes=0 failedConns=0
还有一件事....
我关闭了我的wifi,然后运行相同的命令,它没有显示错误,命令成功运行。
aql> INSERT INTO test.student (pk, emp_id, name, age) VALUES ('k003', 'BP003', 'Sai', 25)
OK, 1 record affected.
这意味着什么......?
任何人都可以帮助我摆脱这个.....!
这意味着你应该增加超时参数。根据您离数据库的距离,1秒可能还不够。
您的网络出了问题,因为您没有提及客户所在的位置(运行AQL
的位置)以及服务器所在的位置,因此无法分辨。显然,如果客户端无法访问服务器,则无法进行操作。如果两者都是localhost你可能有一些奇怪的配置,你的wifi试图在互联网上寻找127.0.0.1
,一旦你断开它,客户端就能够在本地到达服务器...没有足够的细节知道。
只需确保您的客户端可以看到您的服务器节点。最简单的是尝试telnet <host> 3000
(假设默认端口3000)。
关于超时(一般情况下)AQL
类型help
,你会得到(除其他外):
SETTINGS
TIMEOUT (time in ms, default: 1000)
RECORD_TTL (time in sec, default: 0)
RECORD_PRINT_METADATA (true | false, default false)
VERBOSE (true | false, default false)
ECHO (true | false, default true)
FAIL_ON_CLUSTER_CHANGE (true | false, default true, policy applies to scans)
OUTPUT (TABLE | JSON, default TABLE)
LUA_USERPATH <path>, default : /opt/aerospike/usr/udf/lua
LUA_SYSPATH <path>, default : /opt/aerospike/sys/udf/lua
USE_SMD (true | false, default false)
REPLICA_ANY (true | false, default false)
To get the value of a setting, run:
aql> GET <setting>
To set the value of a setting, run:
aql> SET <setting> <value>
所以,SET TIMEOUT 2500
,例如。
在aql中执行以下命令:
SET TIMEOUT 3000;
对于生产服务器来说,超时1000毫秒是一个非常大的超时。我不建议增加超时,而是更好地调查导致客户端和服务器之间的时间问题。