Таблицы Redshift не являются долговечными / постоянными
Я использую SqlWorkbenchJ, чтобы подключиться к моему кластеру Redshift и создать таблицу:
CREATE TABLE mydb_dev.Widget (
fizz BIGINT,
buzz BIGINT,
lastRanOn timestamp with time zone NOT NULL DEFAULT (current_timestamp AT TIME ZONE 'UTC')
);
select * from mydb_dev.Widget;
Когда я запускаю приведенный выше оператор SELECT, он показывает пустую таблицу. Все идет нормально.
Однако, если я отключаюсь, а затем снова подключаюсь к кластеру, а затем снова запускаю тот же самый SELECT, я получаю:
An error occurred when executing the SQL command:
select * from mydb_dev.Widget
[Amazon](500310) Invalid operation: relation "mydb_dev.Widget" does not exist;
1 statement failed.
Execution time: 0.06s
Таким образом, похоже, что создание таблиц не является долговременным или не сохраняет текущее соединение... что здесь за исправление?!?
1 ответ
В SQL Workbench настройка по умолчанию для автоматической фиксации при создании нового профиля подключения - "выключено". Поэтому, когда вы создаете новое соединение и ничего не меняете, автокоммит будет отключен, и вам нужно commit
каждая транзакция.
В качестве альтернативы, автоматическая фиксация может быть отключена / включена в интерактивном режиме, выполнив:
SET autocommit ON/OFF
После создания таблицы вам нужно ее зафиксировать, иначе, когда текущий сеанс завершится, созданная таблица будет удалена.
выполнять COMMIT
после создания таблицы.
CREATE TABLE mydb_dev.Widget (
fizz BIGINT,
buzz BIGINT,
lastRanOn timestamp with time zone NOT NULL DEFAULT (current_timestamp AT TIME ZONE 'UTC')
);
COMMIT;