我有一个:
Redshift中SQLWorkbenchJ上的VACUUM无法在事务块内运行
错误,但我之前已经提交了所有事务。
答案 0 :(得分:12)
您无需更改连接配置文件,您可以使用set autocommit
“即时”更改SQL脚本中的自动提交属性set autocommit on;
vacuum;
set autocommit off;
您还可以通过“SQL - > Autocommit”菜单切换当前的自动提交状态
答案 1 :(得分:6)
对我来说这很有效。
END TRANSACTION;
VACCUM <TABLENAME>;
答案 2 :(得分:2)
打开和关闭自动提交似乎是一个hacky解决方案,特别是如果你有一个长的脚本标点提交和真空(即很多非常大的临时表)。相反,尝试(在一行)。此外,许多人报告redshift不喜欢语法。取而代之的是,
COMMIT;VACUUM;COMMIT;
问题是,vacuum不仅希望成为事务块中的第一个命令,而且希望在之后显式提交块。