Postgres - Изменить столбец: ОШИБКА: оператор не существует: логическое значение = целое число - PullRequest
0 голосов
/ 26 июня 2019

У меня есть столбец базы данных (работает), который имеет тип (int2) в postgres.В нем есть данные.Данные в этом столбце либо 1, либо 0.

Я хочу изменить столбец на логический.Причина, по которой я здесь, заключается в том, что приведенный ниже запрос работал на двух предыдущих тестовых БД I без проблем.Я не могу понять, почему в этой новой базе данных происходит сбой.

Некоторая справочная информация: мы мигрируем из Oracle в Postgres.В базе данных есть плагин с отверстиями.

Я пробовал кастинг, но это не удалось.

Это оригинальный рабочий запрос, который не работает на новой базе данных:

ALTER TABLE system_status ALTER running TYPE bool USING CASE WHEN running = 0 THEN FALSE ELSE TRUE END;
ERROR:
Query execution failed

Reason:
SQL Error [42883]: ERROR: operator does not exist: boolean = integer
  Hint: No operator matches the given name and argument types. You might need to add explicit type casts.

1 Ответ

0 голосов
/ 26 июня 2019

Было ограничение на столбец, у него было другое имя по сравнению с нашей предыдущей базой данных по той или иной причине, поэтому, когда я запустил скрипт ограничения удаления, мне показалось, что он должен был подтвердить.То, как мы делали миграцию, копировало prod для тестирования и создания сценариев, основанных на этом для наших изменений, но у последней базы данных были разные имена ограничений, поэтому что-то должно было быть сделано иначе, когда создавалась новая база данных.

Так что проверьте, нет ли ограничений, связанных с колонкой, если у вас такая же проблема.

...