Redshift VACUUM 不能 运行 在 SQLWorkbenchJ 上的事务块内
Redshift VACUUM cannot run inside a transaction block on SQLWorkbenchJ
我有一个:
VACUUM cannot run inside a transaction block
Redshift 中的 SQLWorkbenchJ 错误,但在此之前我已经提交了所有事务。
您不需要更改连接配置文件,您可以使用 set autocommit
在 SQL 脚本 "on-the-fly" 中更改自动提交 属性
set autocommit on;
vacuum;
set autocommit off;
您还可以通过菜单切换当前的自动提交状态"SQL -> Autocommit"
对我来说这很有效。
END TRANSACTION;
VACCUM <TABLENAME>;
打开和关闭自动提交似乎是一个棘手的解决方案,特别是如果您有一个长脚本,其中不时出现提交和清理(即许多非常大的临时表)。相反,尝试(在一行中)。此外,许多人报告 redshift 不喜欢这种语法。相反,
COMMIT;VACUUM;COMMIT;
问题是 vacuum 不仅希望成为事务块中的第一个命令,它还希望块在之后显式提交。
我有一个:
VACUUM cannot run inside a transaction block
Redshift 中的 SQLWorkbenchJ 错误,但在此之前我已经提交了所有事务。
您不需要更改连接配置文件,您可以使用 set autocommit
在 SQL 脚本 "on-the-fly" 中更改自动提交 属性set autocommit on;
vacuum;
set autocommit off;
您还可以通过菜单切换当前的自动提交状态"SQL -> Autocommit"
对我来说这很有效。
END TRANSACTION;
VACCUM <TABLENAME>;
打开和关闭自动提交似乎是一个棘手的解决方案,特别是如果您有一个长脚本,其中不时出现提交和清理(即许多非常大的临时表)。相反,尝试(在一行中)。此外,许多人报告 redshift 不喜欢这种语法。相反,
COMMIT;VACUUM;COMMIT;
问题是 vacuum 不仅希望成为事务块中的第一个命令,它还希望块在之后显式提交。