微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建字典权限被拒绝

如何解决创建字典权限被拒绝

我在访问新创建的字典时遇到权限错误需要帮助。

我的字典源文件如下:

$ ls -l /root/organization.csv
-rwxrwxrwx 1 clickhouse clickhouse 154 Jul  7 14:56 /root/organization.csv

$ cat /root/organization.csv
1,"a0001","研发部"
2,"a0002","产品部"
3,"a0003","数据部"
4,"a0004","测试部"
5,"a0005","运维部"
6,"a0006","规划部"
7,"a0007","市场部"

我按如下方式创建字典:

CREATE DICTIONARY test_flat_dict
(
    id UInt64,code String,name String
)
PRIMARY KEY id
SOURCE(FILE(PATH '/root/organization.csv' FORMAT CSV))
LAYOUT(HASHED())
LIFETIME(0);

然后我尝试通过一个简单的 sql 查询来测试字典:

SELECT * FROM test_flat_dict

但我得到了例外:

Received exception from server (version 21.6.3):
Code: 156. DB::Exception: Received from localhost:9000. DB::Exception: Failed to load dictionary 'eeedf011-4a41-4337-aeed-f0114a414337': std::exception. Code: 1001,type: std::__1::__fs::filesystem::filesystem_error,e.what() = filesystem error: in canonical: Permission denied [/root/organization.csv] [""],

我的字典可能有什么问题?

解决方法

正如 ClickHouse documentation 上所述:

When dictionary with source FILE is created via DDL command (CREATE 
DICTIONARY ...),the source file needs to be located in user_files
directory,to prevent DB users accessing arbitrary file on ClickHouse
node.

我怀疑 ClickHouse 是否能够从根主文件夹中检索文件,即使您的文件具有 777 模式。

所以我建议您将数据文件放在 ./user_files 文件夹下(它位于 ClickHouse 数据文件夹的根目录中)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。