PostgreSQL: неожиданный элемент массива - PullRequest
0 голосов
/ 30 августа 2018

Написание приложения Node, которое отправляет некоторые данные в базу данных Postgres. Тип данных одного столбца - это массив пользовательского составного типа.

Вот что я пытаюсь ввести:

'{(123, (12, "Some Description")),(null, (34, "Some Desc"))}'

Составной тип имеет два поля, второе из которых является другим составным типом. Ошибка, которую я получаю от Postgres, дает мне сообщение:

литерал некорректного массива: "{(123, (12," Some Description ")), (null, (34," Some Desc "))}"

С детализацией:

Неожиданный элемент массива

Столбец объявлен как тип данных:

my_custom_data_type[]

Не могу понять это исключение.

1 Ответ

0 голосов
/ 30 августа 2018

Строковая версия массивов ('{...}') может быть громоздкой для работы, особенно с более сложными записями массива, как у вас. Я предпочитаю использовать синтаксис конструктора массива 1003 *, чтобы все было простым старым значением:

array[(123, (12, 'Some Description')), (null, (34, 'Some Desc'))]::my_custom_data_type[]

Этот синтаксис массива также лучше работает с ORM и т.п.

Приведение типа ::my_custom_data_type[] помогает убедиться, что синтаксический анализатор знает, что вы пытаетесь сказать, вы должны уйти, просто приведя первую запись:

array[(123, (12, 'Some Description'))::my_custom_data_type, (null, (34, 'Some Desc'))]

но, вероятно, чище и проще разыграть весь массив.

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