Таблицы 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;
Другие вопросы по тегам