Docker postgres 11 - после запроса обновления столбца новые данные столбца исчезают - PullRequest
0 голосов
/ 06 августа 2020

У меня очень странная проблема.

У меня есть docker env с контейнерами postgres image 11 и python3, в которых выполняется запрос. Случайным образом есть обновление, которое запускается и в итоге ничего не обновляет. Я не вижу ошибок в журналах БД, и нам пришлось добавить несколько одинаковых запросов на обновление, чтобы избежать этого. но теперь это происходит снова.

Docker env:

version: '3'
services:

        postgres:
                image: postgres:11
                restart: unless-stopped
                volumes:
                        - /db_data:/var/lib/postgresql/data
                        - ./posrgres11:/docker-entrypoint-initdb.d:ro
                environment:
                        - POSTGRES_USER=user
                        - POSTGRES_PASSWORD=password
                        - POSTGRES_DB=db_name
        api:
                build: .
                image: 127.0.0.1:5000/api:latest
                restart: unless-stopped
                ports:
                        - 5002:5002
                volumes:
                        - /root/server:/server

Запрос, который выполняется из api в postgres контейнер:

db_execute("UPDATE vms SET timestemp=NOW(), username=%s WHERE name=%s", [user,vm], fetch=None)

verify_db_exec = db_execute("SELECT * FROM vms WHERE name=%s", [vm], fetch="all")

updateT = db_execute("UPDATE vms set timestemp=NOW(),t=%s, username=%s where host=%s RETURNING t,username,host,name",[str(t), user, host_ip])

Столбцы, которые иногда получают данные, а иногда нет: t, timestemp и имя пользователя

Информация о таблицах БД:

CREATE TABLE vms(
        name VARCHAR(20) NOT NULL,
        t TEXT,
        host VARCHAR(20) NOT NULL,
        vlan VARCHAR(20) NOT NULL,
        username VARCHAR(20),
        password VARCHAR(20) NOT NULL,
        timestemp timestamp NOT NULL DEFAULT NOW(),
        ack  VARCHAR(30)
);
                                      

Я должен сказать, что мы также пробовали вручную запрос на обновление что с первой попытки ничего не обновлялось, а со второй попытки обновилось без ошибок на psql cli. это ошибка psql 11?

Нет ошибок из контейнеров, и возвращаемый идентификатор отлично получается в запросе на обновление во время его выполнения. Спасибо за помощь.

...