Как изменить тип столбца с oid на bytea в PostgreSQL - PullRequest
0 голосов
/ 12 сентября 2018

Во-первых, я получил эту ошибку:

org.postgresql.util.PSQLException: ERROR: column xxxx is of type oid but expression is of type bytea
Hint: You will need to rewrite or cast the expression.
Position: 318
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2182)
...

Пройдя некоторое время, я думаю, мне следует сменить тип столбца с oid на bytea. Я попробовал это в пользовательском интерфейсе pgAdmin:

ALTER TABLE theTableName
ALTER COLUMN xxxx TYPE bytea

Но я получил ошибку:

ERROR:  column "xxxx" cannot be cast automatically to type bytea
HINT:  You might need to specify "USING xxxx::bytea".
SQL state: 42804

Тогда я попробовал:

ALTER TABLE theTableName
ALTER COLUMN xxxx TYPE bytea USING xxxx::bytea

И я получил эту ошибку:

ERROR:  cannot cast type oid to bytea
LINE 2: ALTER COLUMN xxxx TYPE bytea USING xxxx::bytea
                                                ^
SQL state: 42846
Character: 88
  • Система: Windows 10
  • Версия PostgreSQL: 10
  • pgAdmin 4 версия: 3.0
  • Python версия 2.7.11
  • Колба версия: 0.12.2

Могу я спросить, как это решить? Большое вам спасибо!

1 Ответ

0 голосов
/ 12 сентября 2018

Приведение к TEXT, затем к BYTEA:

ALTER TABLE theTableName
ALTER COLUMN xxxx TYPE bytea USING xxxx::TEXT::BYTEA

ПРЕДУПРЕЖДЕНИЕ

Обратите внимание, что это не волшебным образом переносит данные!Следовательно, большой объект, находящийся в pg_largobject, на который ссылается значение, хранящееся в столбце oid, не копируется в таблицу theTableName.Запускайте его только на пустых столах или если вы можете позволить себе потерять большие объекты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...