Redshift

ALTER TABLE ALTER COLUMN 不能在事務塊內執行;

  • December 23, 2021

我正在嘗試將 redshift 中的列從它更改varchar(30)varchar(100)它不起作用並引發如下錯誤:

使用的命令:

alter table t_name alter column c1 type varchar(300);

錯誤:

[Amazon](500310) Invalid operation: ALTER TABLE ALTER COLUMN cannot run inside a transaction block; [SQL State=25001, DB Errorcode=500310]

這對我有幫助

set autocommit on;
alter table schemaname.tablename alter column columnname type varchar(2000);
set autocommit off;

解決方案在這裡找到

AWS 文件中,檢查您是否違反任何條件:

ALTER COLUMN column_name TYPE new_data_type- 更改定義為VARCHAR數據類型的列的大小的子句。考慮以下限制:

  • 您不能使用壓縮編碼BYTEDICTRUNLENGTHTEXT255或更改列TEXT32K
  • 您不能將大小減小到小於現有數據的最大大小。
  • 您不能使用預設值更改列。
  • 您不能使用UNIQUEPRIMARY KEY或更改列FOREIGN KEY
  • 您不能更改事務塊 ( BEGIN ... END) 中的列。有關事務的更多資訊,請參閱可序列化隔離

引用自:https://dba.stackexchange.com/questions/259066