私は持っています:
VACUUMはトランザクションブロック内で実行できません
redshiftのSQLWorkbenchJでエラーが発生しましたが、この前にすべてのトランザクションをすでにコミットしています。
接続プロファイルを変更する必要はありません。SQLスクリプト内のautocommitプロパティを set autocommit で「オンザフライ」で変更できます。
set autocommit on;
vacuum;
set autocommit off;
メニューの[SQL]-> [自動コミット]から現在の自動コミット状態を切り替えることもできます
私にとってこれはうまくいきました。
END TRANSACTION;
VACCUM <TABLENAME>;
自動コミットのオンとオフを切り替えることは、特にコミットとバキュームで中断された長いスクリプトがある場合(つまり、非常に大きな一時テーブルがたくさんある場合)、ハッキーな解決策のように見えます。代わりに、(1行で)試してください。また、多くの人が赤方偏移が構文を好まないと報告しています。代わりに、
COMMIT;VACUUM;COMMIT;
問題は、バキュームがトランザクションブロックの最初のコマンドになるだけでなく、ブロックが後で明示的にコミットされることを望んでいることです。