【问题标题】:Cannot insert into table in readonly mode无法以只读模式插入表
【发布时间】:2019-07-31 06:51:19
【问题描述】:

当我尝试在 clickhouse 数据库中插入记录时遇到异常:

例外:

Code: 164, e.displayText() = DB::Exception: Cannot insert into table in readonly mode, e.what() = DB::Exception

节点包:

https://www.npmjs.com/package/clickhouse

连接代码:

const clickhouse = new ClickHouse({
url: 'http://localhost',
port: 8123,
debug: true,
database: 'mydb',
basicAuth: 'default',
username: '',
password: '',
isUseGzip: false,
config: {
    session_timeout                         : 60,
    output_format_json_quote_64bit_integers : 0,
    enable_http_compression                 : 0
},

});

表架构:

CREATE TABLE logs_1 ( trid UInt64,  date UInt32,  email String) ENGINE = Log;

【问题讨论】:

  • 您的数据库处于只读模式。你为什么不去阅读文档?也许这会有所帮助clickhouse.yandex/docs/en/operations/settings/…
  • 我不知道,如何在当前处于只读模式的任何其他数据库中插入。这是不可能的。您的问题不清楚-您想问,如何将数据库切换到正常模式?
  • @victor 是的,它可能会有所帮助
  • @victor 是的,它可能会有所帮助
  • 因此,如果后端出现问题,请确保您已设置有关指南的数据库(有关详细信息,请参阅clickhouse.yandex)并且您正在尝试写入非复制表,或者如果所以 - 你的 Zookeeper 安装正确。如果没有配置 Zookeeper,Clickhouse 将不允许您写入复制表。

标签: node.js clickhouse


【解决方案1】:

可能的原因:

  • 您使用设置了只读标志的用户连接到 ClickHouse 用户设置/用户个人资料。
  • 您正在尝试使用 GET 插入数据 请求而不是 POST (如果您使用它,可能不是您的情况 图书馆)
  • 您正在插入复制表,而服务器没有 与 zookeeper 的连接(不是您插入的情况 带有日志引擎的非复制表)

所以请检查默认用户和配置文件的设置。很可能它包含只读标志。

【讨论】:

  • 使用 GET insted 的 POST,正是我的问题。很有帮助的答案。
猜你喜欢
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
相关资源
最近更新 更多