172 похожих чатов

Всем привет! Коллеги, такая история: заливаю в БД, созданную в

postgres, данные. Данные нужны для запуска приложения на сервере. При заливке данных в БД виден блок ошибок по функции ON SELECT. Лог установки и код, на который ссылается - в .txt прикрепил.

Прошу подсказать, кто чем может.
В sql знаний пока 0.
Еще добавлю, что postgres установил 16. Приложение использует то ли 8, то ли 9. Быть может дело в несовместимости версий?

39 ответов

82 просмотра

В настоящее время правила ON SELECT должны быть безусловными, с характеристикой INSTEAD (вместо исходного), и их действия должны состоять из единственной команды SELECT. Таким образом, правило ON SELECT по сути превращает таблицу в представление, чьим видимым содержимым являются строки, возвращаемые командой SELECT, заданной в правиле, а не данные, хранящиеся в таблице (если они есть). Вообще же для этой цели лучшим стилем считается пользоваться командой CREATE VIEW, а не создавать реальную таблицу и определять затем правило ON SELECT для неё.

Леново- Автор вопроса
Sergey Gr
В настоящее время правила ON SELECT должны быть бе...

Огромное спасибо вам за развернутый ответ. Подскажите тогда, как лучше поступить, чтобы исправить, еще учитываю, что знаний 0. Может что-то точечно изучить, чтобы поправить. Или может вы имели ввиду тупо ON SELECT на CREATE VIEW заменить и будет работать?

Леново- Автор вопроса
id0
лучше всего не использовать руль

Подскажите, как поправить код

Леново
Огромное спасибо вам за развернутый ответ. Подскаж...

Я не уверен, но похоже что в старых версиях Postgres это такой механизм создания view. Соответственно вы можете заменить CREATE RULE "_RETURN" AS ON SELECT TO productioncounting_trackingoperationproductincomponenthelper DO INSTEAD SELECT trackingoperationproductincomponent.id на CREATE VIEW productioncounting_trackingoperationproductincomponenthelper SELECT trackingoperationproductincomponent.id

Леново- Автор вопроса
Sergey Gr
Я не уверен, но похоже что в старых версиях Postgr...

а может быть тогда стоит поставить старую версию постгрес? На гитхабе в инструкции к проге автор пользовался 8 или 9-й постгрес. Про совместимость версий есть инфа?)

Леново
а может быть тогда стоит поставить старую версию п...

Что касается нумерации - до 9 включительно мажорные релизы разделялись первым числом после точки. Затем, начиная с 10 мажорные релизы стали целочисленной частью номера версии. Т.е. между 9.0 и 9.6 такая же большая разница как например между 10.12 и 16.1 Что касается обратной совместимости - проблемы есть, но скорее редкие. Впрочем мало кто обновляется на 10-15 мажорных релизов сразу как вы.

Леново- Автор вопроса
Sergey Gr
Что касается нумерации - до 9 включительно мажорны...

Понял Из вашего ответа сделаю вывод, что стоит таки поставить старую версию

А "данные"-то Вы эти откуда взяли? Если есть доступ к базе-источнику, то лучше бы попробовать снова — снять дамп нормально и загрузить его в v16. А если такой возможности нет — показанный код придётся переписывать (на CREATE VIEW ... AS SELECT ...), потому что ON SELECT rules на таблицах в PostgreSQL, начиная с v16 (наконец-то!) больше нет.

А снять дамп бинарниками от новой версии поможет?

Леново- Автор вопроса
Yaroslav Schekin
А "данные"-то Вы эти откуда взяли? Если есть досту...

С репозитория на гитхаб. А базы с рабочей системой и на 16-й версии нет( Можно и переписать. Вполне себе, других ошибок при загрузке не увидел, но не факт, что других ошибок нет. Просто быть может так, что приложение не поймет замененные функции.

Леново
С репозитория на гитхаб. А базы с рабочей системой...

> С репозитория на гитхаб. Да, это хуже. Тогда вариант: > Можно и переписать. > но не факт, что других ошибок нет. Да, но с этих можно начать, по крайней мере. > приложение не поймет замененные функции. Хмм... какие "функции"? В том, что Вы показали, ошибки только про rules, вроде как.

Леново- Автор вопроса
Yaroslav Schekin
> С репозитория на гитхаб. Да, это хуже. Тогда ва...

респект за боевой Markdown) > ... какие "функции"?... ну вот и говорю, что знаний нет по sql. Но видел проблему так, что приложение что-то будет искать в этой базе по каким-то ключевым словам, которые я вот заменю в файлике sql. Я понимаю, что файлик - это команды, которые строит архитектуру базы. Но вот будет ли архитектура, которая получалась через ON SELECT в 9.5 соответствовать тому, ято я сделаю через CREATE VIEW на 16-й

Леново
респект за боевой Markdown) > ... какие "функции"...

Да, будет. То, что есть в этом файле — это такой [очень] старый способ создания view, по сути. Например: https://dbfiddle.uk/8vFyUVDf

Леново- Автор вопроса
Yaroslav Schekin
Да, будет. То, что есть в этом файле — это такой [...

Понял. Убедили, отредактирую код. А поставить второй постгрес на дебиан параллельно адекватная идея?) Если 16 тип остановлю, а 9.5 накачу. Не будет ли конфликтов? Или надо через purge удалить обязательно? Или кроме purge еще что-то надо очистить дополнительно?)

Да, можно поставить. Если брать пакеты из PGDG (или его архива, см. https://apt-archive.postgresql.org/ ) — конфликтов не будет (они для этого и предназначены, собственно).

Леново
Понял. Убедили, отредактирую код. А поставить втор...

Вполне нормально сосуществуют на разных портах. Скорее всего первый поставленый на порт 5432, а следующий поставленый будет использовать порт 5433. Но боюсь 9.5 окажется недостаточно старым.

Sergey Gr
Вполне нормально сосуществуют на разных портах. Ск...

Для того чтоб без ошибок загрузить этот дамп базы с github

Леново- Автор вопроса
Yaroslav Schekin
Да, можно поставить. Если брать пакеты из PGDG (ил...

А подскажете, как загружаются старые версии? Сижу на Debian 12, хочу Postgres 9.5.1. В sources.list добавил репозиторий этот, но при apt update выдает какую-то ошибку gpg и нет файла release. Пакет для установки не находит(

Леново
А подскажете, как загружаются старые версии? Сижу ...

> хочу Postgres 9.5.1. Не хотите. ;) Вам нужен последний minor v9.5, серьёзно. > А подскажете, как загружаются старые версии? Там же где-то рядом была инструкция (и у меня всё по ней работало, кажется), нет?

Леново
А подскажете, как загружаются старые версии? Сижу ...

Если ругается на apt update значит что-то напутали с добавлением репозитория

Все черным по белому написано Ищите другую репу

При добавлении pgdg репозитория соответствующий крипографический ключ добавляли?

Леново- Автор вопроса
Yaroslav Schekin
> хочу Postgres 9.5.1. Не хотите. ;) Вам нужен по...

Хорошо, 9.5, спасибо) Ну вот, дистрибутивы и взял с https://apt-archive.postgresql.org/ вставил, но нет(

Леново- Автор вопроса
central hardware
Все черным по белому написано Ищите другую репу

переведите, пожалуйста, что имеете ввиду

Леново- Автор вопроса
Леново
нет, впервые слышу про такой ключ(

Есть у меня гипотеза что подойдёт ключ от обычного (не архивного) репозитария. Сможете самостоятельно попробовать? Вот как здесь описано https://www.postgresql.org/download/linux/debian/

Леново- Автор вопроса
Sergey Gr
Есть у меня гипотеза что подойдёт ключ от обычного...

Благодарю, сбросил себе пока в избранное. Завтра попробую еще

Он считает что уже стоит 9.5 и рекомендует поставить 16. А дальше говорит что 16 встанет в сторонке от 9.5 и что нужно сделать чтоб обновить 9.5 до 16

Sergey Gr
Он считает что уже стоит 9.5 и рекомендует постави...

Кстати, возможно придётся промежуточную версию (например, 10) ставить, т.к. в одном из предыдущих релизов, вроде, удаляли поддержку обновления со старых версий. Но подробностей не помню, так что придётся почитать release notes.

Леново- Автор вопроса
Sergey Gr
Он считает что уже стоит 9.5 и рекомендует постави...

> встанет в сторонке ну, если я ее оставлю? Спрашиваю во избежание конфликтов в дальнейшем

Леново
> встанет в сторонке ну, если я ее оставлю? Спраш...

Да, вполне нормально. Получится два сервиса в systemd. Что-то в духе postgresql@9.5-main и postgresql@16-main

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта