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

Привет, у меня проблема при запуске psql. Я запускаю

в докере и добавил entrypoint.
В нём я создаю расширение:
psql -v ON_ERROR_STOP=0 --username "$POSTGRES_USER" <<-EOSQL
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
EOSQL
Но получаю
CREATE EXTENSION
2022-01-12 21:54:35.795 UTC [47] LOG: received fast shutdown request
т.е. при выполнении этой строчки psql почему-то вырубается и не создаёт расширение(
чё делать?)
upd: он вырубется всегда, после выболнения скрипта. Но почему расширение не сохраняется?

29 ответов

33 просмотра
Ruslan- Автор вопроса

up. помогите пж, что может быть

Посмотрите в логе сервера. Предположу, что при запуске С-шного кода инициализации расширения сервер падает

Ruslan- Автор вопроса
alex che
Посмотрите в логе сервера. Предположу, что при зап...

да дело в том, что при перезапуске он мне возвращает ещё extension already exist. Тем не менее в запущенном постгресе его нет. Как будто он при инициализации запускает какой-то другой обработчик sql. А потом вырубает и врубает нормальный

Ruslan
up. помогите пж, что может быть

А хотя бы create table какой-нибудь, вручную сделанный, остаётся? А то вообще это умолчание в докере -- убивать контэйнер вместе с внешним слоем, насколько я помню.

Ruslan- Автор вопроса
Ilya Anfimov
А хотя бы create table какой-нибудь, вручную сдела...

да все остальные команды из начального скрипта работают норм (таблички создаются, пользователи)

Ruslan- Автор вопроса
Ruslan
да все остальные команды из начального скрипта раб...

ну и просто если отправить запрос на создание расширения - оно создаётся норм и остаётся

Ruslan
да дело в том, что при перезапуске он мне возвраща...

И да, если extension already exists -- то оно создалось. Если вам что-то не нравится в результатах его создания -- то так и пишыте.

Ruslan- Автор вопроса
Ilya Anfimov
И да, если extension already exists -- то оно созд...

его нет в запущенном psql, оно не создалось совсем. я могу продемонстрировать, если не верите

Ruslan
да дело в том, что при перезапуске он мне возвраща...

Я не очень понял, что значит "при перезапуске он мне возвращает ещё extension already exist". Но если упало в процессе инициализации, то может быть неконсистентное состояние расширения. Попробуйте разширение включить в preload_libraries —- может получите другую диагностику. Ещё можно увеличить DEBUG_LEVEL — опять другую диагностику. Но это всё имеет смысл, если вы будете эту диагностику честно искать в логах

Ruslan
его нет в запущенном psql, оно не создалось совсем...

В смысле -- про "совсем" ошыбаетесь. ТАк-то его можэт не быть в любом psql, конечно. Например, потому что там транзакцыя раньшэ открыта или потому, что он к другой базе подключён.

Пока что я предполагаю, что сценарий какой-то такой: у вас в докере не установлена какая-то библиотека, нужная для расширения (или не той версии). Когда вы говорите CREATE EXTENSION — оно падает и весь postgres тоже

Ruslan- Автор вопроса
alex che
Пока что я предполагаю, что сценарий какой-то тако...

он не падает, я ведь написал - он всегда перезапускается после выполнения скрипта entrypoint. Всегда, даже если там нет этой команды с расширениями

Ruslan- Автор вопроса
alex che
Пока что я предполагаю, что сценарий какой-то тако...

вот, я например два раза эту команду попробовал запустить - первый раз она прошла, второй раз написало already_exist

Ruslan
он не падает, я ведь написал - он всегда перезапус...

Вот эта фраза "LOG: received fast shutdown request" значит падает, имхо

alex che
Вот эта фраза "LOG: received fast shutdown reques...

Если бы падает -- было бы сказано про сигнал, который пришёл незадачливому процэссу и про то, что мы экстренно убиваемся, поскольку shared_buffers могут быть повреждены. А это -- ну, мало ли. Можэт, докер не настроен на работу постоянно.

Ruslan
screenshot вот, я например два раза эту команду попробовал за...

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

Ruslan
а как это сделать?

Прописать библиотеку в параметр shared_preload_libraries + я видел стенд, где код стартапа тоже выполнялся, но сейчас не помню, как это делать

alex che
Прописать библиотеку в параметр shared_preload_lib...

uuid? Это какая-то странная библиотека uuid, что ей нужно shared_preload_libraries.

Ilya Anfimov
uuid? Это какая-то странная библиотека uuid, что е...

Согласен, в описании расширения должно быть сказано, как его правильно инициализировать

alex che
Согласен, в описании расширения должно быть сказан...

Я думаю, что это предположэние насчёт shared_preload_libraries в данном случае неверно.

Ruslan- Автор вопроса
alex che
Прописать библиотеку в параметр shared_preload_lib...

вот так сделал, не получилось, в логах ошибок нет

Ruslan
screenshot вот так сделал, не получилось, в логах ошибок нет

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

Ruslan
100%

Для проверки можэте, кстати, запустить там на сервере нормальный psql с теми жэ аргументами, что вы для своего скрипта использовали -- и сделать тожэ самое из него.

Ruslan
100%

И да, я не верю в чудеса. В то, что человек относительно новый в теме из dbeaverа промахнулся -- верю легко. В чудеса, когда расшырение есть для CREATE EXTENSION и нет для всех аналогов \dx -- не верю.

Ruslan
screenshot вот, я например два раза эту команду попробовал за...

Вот здесь в середине фраза "PostgreSQL init process complete" меня смущает. Может оно создаёт новую базу между этими шагами?

Ruslan- Автор вопроса
alex che
Вот здесь в середине фраза "PostgreSQL init proces...

в доке вычитал, что для сценариев entrypoints запускается "временный демон" Also, as of docker-library/postgres#440 , the temporary daemon started for these initialization scripts listens only on the Unix socket, so any usage should drop the hostname portion (see docker-library/postgres#474 (comment) for example).

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

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

Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
9
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Коллеги, добрый вечер. Создаю коллекцию от TFPGMap, ключ - перечисление, значение - целое. Нужно отсортировать коллекцию по значению. Как это можно сделать?
Kirill Filippenok
11
Привет, такой вопросик появился кажется ли вам что Rust слишком сложный/строгий для высокоуровневого программирования и слишком "безопасный"/строгий для низкоуровневого?
Крокант
10
Скажи а ты когда этот канал создавал ты уже дельфи не любил, или это со временем пришло?
Роман Лях (rgreat)
18
Всем привет! Использую кастомное модальное диалоговое окошко, все по классике - mrOK, mrCancel как ModalResult. Однако есть нюанс - в главной форме есть универсальный обработч...
Олег Гранишевский
20
Карта сайта