mysql Redshift Alter table命令返回`目标表和源表属性不匹配,`

9fkzdhlc  于 2023-05-16  发布在  Mysql
关注(0)|答案(1)|浏览(143)

我有一个airflow管道,它从一个现有的表创建一个staging表,从csv加载数据,然后执行以下alter命令。

ALTER TABLE "schema"."table"
            APPEND FROM "schema"."table_staging"
            FILLTARGET

我观察到下面的错误是偶尔返回,我只是放弃了原来的表,并重新创建它,它会正常工作几天,然后没有在哪里我会再次遇到这个问题。

DETAIL:  
  -----------------------------------------------
  error:  Target table and source table attributes don't match.
  code:      8001
  context:   The source table and the target table have different sort keys. Both tables must use the same sort keys and sort style.
  query:     0
  location:  tbl_perm.cpp:2823
  process:   padbmaster [pid=19083]

我不明白为什么它突然就坏了。

ctehm74n

ctehm74n1#

  • 如果源表和目标表的定义不一致,则“追加”将不起作用。
  • 当创建表时没有设置某些属性时,redshift通常会控制它,并在检测到这是一个更好的配置时更改它。

也就是说,在您描述的场景中:可能原始表的排序关键字没有设置,所以redshift确定它。最初,排序键匹配并且没有问题,但是当redshift更改(原始的)排序键时,错误再次出现。
我建议显式设置排序键和/或使用CREATE TABLE staging (LIKE original),因为“Distribution style、sort keys、BACKUP和NULL properties are inherited by LIKE tables”(docs)。

相关问题