капаю дальше. Ситуация такая: условно есть два скрипта которые делают CRUD с бд, и одна база данных к которой они обращаются.
Проблема : удаляю строку в одном скрипте, ищу ее из другого скрипта и ( о чудо!) нахожу, хотя не должен.
Возможные причины: у двух скриптов разные сессии, и данные между ними не согласованы. Кэш orm? (склоняюсь на данный моммент что нет, делал эксперимент с только одним запросом)
Вопрос: какие варианты есть сделать так что бы оба скрипта работали с одной сессией? Не переоткрывать же соединение на каждый запрос
никак два скрипта не могут работать с одной сессией насколько мне известно > Не переоткрывать же соединение на каждый запрос , а почему нет ?
Транзакции?
> Проблема : удаляю строку в одном скрипте, ищу ее из другого скрипта и ( о чудо!) нахожу, хотя не должен. А почему Вы думаете, что не должны? Это в общем верно только в том случае, если транзакция другого скрипта начинает выполняться после завершения транзакции первого (уровни изоляции могут влиять на это, да).
В одной сессии — это конечно, решит проблему, но лучше бы вы разобрались, что на самом деле происходит, и решили проблему более правильно. Если второй скрипт запустить после окончания первого, то проблема тоже воспроизводится?
Нет, не вопроизводится. Думаю потому что открывается новое соединение, создаётся новая сессия, и там уже данные актуальные.
> Проблема : удаляю строку в одном скрипте, ищу ее из другого скрипта и ( о чудо!) нахожу, хотя не должен. Транзакцию не закоммитили что ли?
Что вы вкладываете в понятие "сессия"?
да понятно уже давно, что у товарища софтина где-то неявно открывает транзакцию и не коммитит но он почему-то не хочет об этом слышать и ищет другой ответ
Обсуждают сегодня