etcd "Not a directory" 放一些值时的结果
etcd "Not a directory" result when put some value
我在我的应用程序中使用 etcd v3.3 并通过其 WEB 与其通信 API。
根据 documentation,在某些路径上放置键值对时,我不需要显式创建目录。
这是我正在做的一个例子(注意路径 /base-test-path/level1/level2/level3/ 还不存在):
curl -X PUT -d value=foo http://localhost:2379/v2/keys/base-test-path/level1/level2/level3/
结果是:
{"action":"set","node":{"key":"/base-test-path/test/test/test","value":"foo","modifiedIndex":347017,"createdIndex":347017}}
但是当我尝试在现有路径中更深入地添加一个新值时,我得到一个错误(请注意路径 /base-test-path/level1/level2/level3/ 已经存在,因为我之前 运行 之前的命令):
curl -X PUT -d value=foo http://localhost:2379/v2/keys/base-test-path/level1/level2/level3/level4
回复:
{"errorCode":104,"message":"Not a directory","cause":"/base-test-path/level1/level2/level3","index":347018}
当路径的任何部分已经存在时,etcd 似乎不会创建目录。
问题是:我能否保持我的代码简单,这样我就不需要关心 etcd 目录并且仍然能够在我想要的每个 etcd 路径上放置值?
好像etcd,当与API v2 说话时,当某些键已经在该位置时无法创建目录。
例如。当你有钥匙时
/base-test-path/level1/somekey
您不能创建这样的密钥 ("Not a directory"):
/base-test-path/level1/somekey/subkey
当我切换到 API v3 时,这个问题就消除了,因为它根本没有目录。 See a comment here or official documentation here。
我在我的应用程序中使用 etcd v3.3 并通过其 WEB 与其通信 API。 根据 documentation,在某些路径上放置键值对时,我不需要显式创建目录。 这是我正在做的一个例子(注意路径 /base-test-path/level1/level2/level3/ 还不存在):
curl -X PUT -d value=foo http://localhost:2379/v2/keys/base-test-path/level1/level2/level3/
结果是:
{"action":"set","node":{"key":"/base-test-path/test/test/test","value":"foo","modifiedIndex":347017,"createdIndex":347017}}
但是当我尝试在现有路径中更深入地添加一个新值时,我得到一个错误(请注意路径 /base-test-path/level1/level2/level3/ 已经存在,因为我之前 运行 之前的命令):
curl -X PUT -d value=foo http://localhost:2379/v2/keys/base-test-path/level1/level2/level3/level4
回复:
{"errorCode":104,"message":"Not a directory","cause":"/base-test-path/level1/level2/level3","index":347018}
当路径的任何部分已经存在时,etcd 似乎不会创建目录。
问题是:我能否保持我的代码简单,这样我就不需要关心 etcd 目录并且仍然能够在我想要的每个 etcd 路径上放置值?
好像etcd,当与API v2 说话时,当某些键已经在该位置时无法创建目录。 例如。当你有钥匙时
/base-test-path/level1/somekey
您不能创建这样的密钥 ("Not a directory"):
/base-test-path/level1/somekey/subkey
当我切换到 API v3 时,这个问题就消除了,因为它根本没有目录。 See a comment here or official documentation here。