【问题标题】:How to change format of sql table in Tarantool如何在 Tarantool 中更改 sql 表的格式
【发布时间】:2020-10-07 12:23:37
【问题描述】:

我想在sql表中添加可为空的列,但是更改表格式会导致错误:

box.execute([[
    CREATE TABLE test(
        "id" INTEGER PRIMARY KEY AUTOINCREMENT,
        "name" TEXT NOT NULL
    )
]])

f = box.space.TEST:format()

table.insert(f, {type='string', name='description', is_nullable=true})

box.space.TEST:format(f)

error: 'Can''t modify space ''TEST'': exact_field_count must be either 0 or >= formatted
    field count'

那么有什么办法可以改变sql表的格式吗?

【问题讨论】:

    标签: sql tarantool


    【解决方案1】:

    目前(Tarantool 2.4 测试版)有an open issue 与此相关。问题的根源在于通过 SQL DDL 创建的表在元数据中包含非空的field_count 属性,这会禁止将较大的元组保存到空间中。

    但是,如果您在创建空间时指定了 field_count 或使用 SQL DDL 创建空间,并决定添加一个元组/列,则将 field_count 值设置为 0 的解决方法如下:

    tarantool> box.space._space:update(box.space.YOUR_SPACE.id, {{'=',5,0}})
    

    之后,您将能够更改空间格式并插入更大的元组。将YOUR_SPACE 替换为您的空间的实际名称。如果是通过 SQL DDL 创建的空间,则此名称将是大写字母的 SQL 表名称。

    【讨论】:

      【解决方案2】:

      更新:在最新的稳定 Tarantool 版本 (2.7.2) 中,现在可以添加带有 ALTER 的列,例如 box.execute([[ALTER TABLE test ADD COLUMN third INTEGER;]])

      【讨论】:

        猜你喜欢
        • 2021-12-31
        • 1970-01-01
        • 2019-12-06
        • 1970-01-01
        • 1970-01-01
        • 2020-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多