Создание таблицы Redshift не является долговечным / постоянным - PullRequest
0 голосов
/ 29 мая 2018

Я использую 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 Ответ

0 голосов
/ 29 мая 2018

В SQL Workbench по умолчанию для автоматической фиксации при создании нового профиля подключения установлено значение «off».Поэтому, когда вы создаете новое соединение и ничего не меняете, автоматическая фиксация будет отключена, и вам нужно 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;
...