Google Cloud SQL - синтаксическая ошибка в действительном запросе - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь запустить экземпляр приложения (движок Kubernetes в Google Cloud), который вызывает некоторую миграцию. Миграции проверены и работают локально на Postgres 12. Тем не менее, облако Google Postgres (насколько я понимаю, v11) дает сбой при запросе, который выглядит для меня полностью действительным.

Я подключился через PgAdmin через Google Cloud Proxy для Google Cloud SQL и попытался выполнить запрос на миграцию (создать или заменить процедуру) и нашел строку, которая выдает мне ошибку. Но, опять же, это выглядит совершенно корректно для меня и работает локально, не дает никаких ошибок / предложений в Smart IDE и т. Д. c.

Ошибка, возвращаемая из БД, выглядит как

QueryFailedError: синтаксическая ошибка в или рядом с "publi c"

Строка, которая дает мне эту ошибку, является второй строкой из примера кода ниже. Изменение с public.percent на percent приводит к той же ошибке («синтаксическая ошибка в или около« процента »). Замена таблицы другим именем таблицы приводит к той же ошибке, что и выше. Замена UPDATE на SELECT или RAISE NOTICE или около того (в тестовых целях) работает нормально.

Блок кода, который дает мне эту проблему:

IF (update) THEN
  UPDATE public.percent
  SET percent = calculations[1]
  WHERE target_user_id = item.user_id
  AND type = secondary_criterion;
ELSE
  INSERT INTO public.percent (
    type,
    percent,
    target_user_id
  )
  VALUES (
    secondary_criterion,
    final,
    item.user_id
  );
END IF;

Есть идеи?

1 Ответ

0 голосов
/ 24 апреля 2020

Проблема была проста, как глупость. Поскольку «обновление» является зарезервированным словом, все его употребления уязвимы. Гугл облако и амазон как-то кру sh с этим SQL. Остается открытым вопрос, почему он работает локально на разных станциях, но, по крайней мере, причина ясна.

...