postgres

docker postgres Не запускается с первого раза при docker-compose up --build

Скорее всего причина в том, что у вас первый раз с ошибками выполняется какая-то инициализация, которая просто не запускается второй раз (почему все и "работает" со второго раза), напр. ошибки могут быть в скрипте инициализации docker-entrypoint-initdb.d.

В нашем случае проблема была в том, что скрипт не поддерживал имена БД пользователя и бд с тире (это можно либо добавить поддержку тире на уровне скрипта, либо использовать имена без тире).

docker postgres /docker-entrypoint-initdb.d Пользователь и БД не создаются заново при rebuild

Дело в том, что /docker-entrypoint-initdb.d выполняется, только если у нас "пустые данные" - т.е. обычно при первом создании контейнера.

Как написано в документации:

scripts in /docker-entrypoint-initdb.d are only run if you start the container with a data directory that is empty; any pre-existing database will be left untouched on container startup

postgres timestamptz Формат и работа с ним

Forums:

Извлекать данные можно с точностью до микросекунд, см. документацию по timestapmz

Извлечение в формате по умолачанию:

SELECT  "scenario_details"."date_updated" 
 FROM "scenario_details" LIMIT 3;

Извлечение с указанием формата:

SELECT 
to_char("scenario_details"."date_updated", 'YYYY-MM_DD HH24:MI:SS:US') 
 FROM "scenario_details" LIMIT 3;

docker-compose Postgres пример docker-compose.yml

Например так:

version: "3.9"
services:
  postgres:
    image: "postgres:12.7"
    container_name: my-test-postgres
    ports:
     - "29132:5432"
    environment:
      POSTGRES_PASSWORD: 1234
      POSTGRES_USER: devuser
      POSTGRES_DB: devdb

-- после такой настроки для пользователя devuser в постгре будет включена авторизация по паролю (именно для него) и получится избежать ошибки вида:

password authentication failed for user

pg npm package Проверка соединения с базой даннных в консоли, nodejs

Можно так:

Создадим новую директорию, перейдем в нее.
Затем инициллизируем проект

npm init -y

Установим зависимости:

npm i pg ramda dotenv

В файле package.json включим тип модуля:

"type": "module"

Положим этот код в имяфайла.ts (имя можно любое):

pg error: password authentication failed for user Ошибка

Проблема

Проблема состоит в том, что консольный (psql) и графический (DBevear) работают нормально (удаленная база данных, порт прокинут через SSH-туннель), а pg не работает через тот же туннель выдавая ошибку:

(node:449926) UnhandledPromiseRejectionWarning: error: password authentication failed for user

Можно помочь:

pg_restore: error: could not execute query: ERROR: must be member of role "postgres" Ошибка

Forums:

Одним из самых простых решений будет разворачивать БД под тем же пользователем, под кем создавался дамп (в данном случае используем юзера postgres):

pg_restore --clean  -U postgres -d postgres  -1  mydump.sql 

postgres The input is a PostgreSQL custom-format dump.Use the pg_restore command-line client Ошибка

Forums:

Для команды загрузки дампа вида:

psql reo -U reo < dump-postgres.sql 

получаем ошибку:

The input is a PostgreSQL custom-format dump.
Use the pg_restore command-line client to restore this dump to a database.

postgresql Ошибка "пользователь "postgres" не прошёл проверку подлинности (Peer)"

Ошибка

При попытке подключиться через консоль к БД так видим ошибку:

psql: ВАЖНО: пользователь "postgres" не прошёл проверку подлинности (Peer)

Решение

Подключение прошло успешно с помощью такой команды (используется Postgresql 9.6)

sudo -u postgres psql

postgresql SELECT FROM WHERE - пример SQL запроса

Из таблицы dl получим все данные, где поле dl_id = 5:

SELECT * from dl WHERE dl.dl_id = 5; 

SELECT С указанием схемы

Можно указать также и схему, к которой относится таблица (а для имен типа таблиц типа `user` без этого вообще не обойтись)

SELECT * FROM public.user;

Или так:

SELECT * FROM public."user";
Subscribe to RSS - postgres