【问题标题】:Teradata 15: Failure 7545 Identity Column is over its limitTeradata 15:失败 7545 标识列超出其限制
【发布时间】:2015-10-23 23:05:32
【问题描述】:

我收到了这个 Teradata failure 7545 Identity Column is over its limit,但我只插入了几百条记录,并且我已经将数据类型从 INT 更改为 BIGINT。

这是我的创建表语法,我真的很困惑为什么 Teradata 不高兴?

CREATE  TABLE LOCATION
(        LOCATION_ID          BIGINT GENERATED BY DEFAULT AS IDENTITY (START WITH  1 INCREMENT BY 1 MAXVALUE     1000000)  ,
     ....

任何见解将不胜感激

【问题讨论】:

    标签: sql teradata


    【解决方案1】:

    您的定义默认为NO CYCLEMAXVALUE 设置为1000000,因此使用INTBIGINT 无关紧要,最大数量为1,000,000。

    Teradata 并行分配一个 IDENTITY,即每个 AMP/PE 根据 dbscontrol 参数 IdCol Batch Size 请求一系列数字,因此在您实际插入一百万行之前将达到 1,000,000。

    删除MAXVALUE,但保留BIGINT,仅在需要存储数百万行时才使用INT...

    【讨论】:

    • 以下对我有用。我最初并没有意识到删除 MAXVALUE 是什么意思,所以我想分享一下。 row_id BIGINT GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 NO CYCLE),
    【解决方案2】:

    尝试使用 ALWAYS 和 NO CYCLE 而不是默认生成... 还要检查 DBSCONTROL 参数 27 中的 IdCol Batch Size。 就像我的情况一样,它是 10k 所以,尝试增加它然后尝试。

    1. IdCol 批量大小 = 10000

    【讨论】:

      【解决方案3】:

      这是一个有效的解决方案:

      我将最大值增加到了 1 亿。

      原因是每个 AMP 都有 100,000 个数字范围。我的 2750 设备中有 72 个 AMP,因此最小最大值为 720 万。当我对最大标识列值的定义超过 720 万时,它起作用了。

      【讨论】:

        猜你喜欢
        • 2023-03-13
        • 1970-01-01
        • 2020-09-13
        • 2018-08-18
        • 2015-10-30
        • 1970-01-01
        • 2021-03-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多