У меня очень странная проблема.
У меня есть 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?
Нет ошибок из контейнеров, и возвращаемый идентификатор отлично получается в запросе на обновление во время его выполнения. Спасибо за помощь.