|
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
|
||||||
Не работает транзакция22.01.2025, 16:38. Показов 1639. Ответов 14
Добрый день! Случилась такая история. Есть код
0
|
||||||
| 22.01.2025, 16:38 | |
|
Ответы с готовыми решениями:
14
Не работает транзакция Не работает транзакция Не работает транзакция MySQL |
|
Native x86
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
|
|
| 22.01.2025, 19:26 | |
|
БД какая? Не все базы (и не все движки в некоторых базах) поддерживают транзакции.
0
|
|
|
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
|
|
| 23.01.2025, 17:20 [ТС] | |
|
0
|
|
|
Native x86
6857 / 3790 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
|
|||
| 23.01.2025, 17:57 | |||
|
В коде у вас все выглядит правильно, но проблема скорее всего в другом месте.
0
|
|||
|
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
|
|||||||||
| 23.01.2025, 18:12 [ТС] | |||||||||
|
Добавлено через 3 минуты
0
|
|||||||||
|
Невнимательный
|
||||||||||||
| 23.01.2025, 18:32 | ||||||||||||
|
gena8208, как-то можно проверить влияет-ли ?
какое-то добавление, а потом скрипт просто завершает работу... без COMMIT/ROLLBACK изначально вроде так и было реализовано
Не по теме: Как вариант ещё попробовать COMMIT и ROLLBACK в функции где-то реализовать, и зарегистрировать её с
но тоже костыль, и передавать/получать кучу всего... объект pdo, перевменную какую насчёт всё-ли выполнено
1
|
||||||||||||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|||
| 23.01.2025, 18:36 | |||
|
Условно, у юзера баланс 100 рублей. Запускается 2 транзакции, каждая на списание 70 рублей. Каждая видит, что у юзера баланс 100, исходя из этого оформляет покупку и обновляет баланс на 30р. В итоге оформилось 2 заказа суммарно на 140р, а у юзера списалось только 70. Для решения проблемы используем блокирующее чтение, т.е. SELECT ... FOR UPDATE. Думаю в вашем случае это вполне может быть оно, т.к. подвисает база, и после отвисания срабатывают сразу несколько транзакций, ожидающих выполнения.
1
|
|||
| 23.01.2025, 18:40 | |
|
0
|
|
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|
| 23.01.2025, 19:06 | |
|
1
|
|
|
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
|
||||||
| 23.01.2025, 20:48 [ТС] | ||||||
|
Добавлено через 1 минуту Добавлено через 4 минуты
0
|
||||||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
|||
| 23.01.2025, 22:15 | |||
|
2) Операция должна быть идемпотентна. Чтоб если вы запускали несколько раз одну и туже операцию - в итоге получили один результат, как будто бы выполнили эту операцию один раз. Для этого и необходим ключ идемпотентности. У вас оба пункта не выполнены.
0
|
|||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
|||||
| 23.01.2025, 23:12 | |||||
|
0
|
|||||
|
4 / 4 / 1
Регистрация: 20.12.2019
Сообщений: 310
|
|||||||||||||
| 26.01.2025, 10:32 [ТС] | |||||||||||||
|
Добавлено через 31 секунду Добавлено через 5 минут Добавлено через 21 минуту Пример
0
|
|||||||||||||
|
Невнимательный
|
||
| 26.01.2025, 11:10 | ||
|
Когда для пользователя выполняется скрипт, который открыл сессию, файл сессии блокируется , и открытия сессии, с таким-же сид, ожидают разблокирования ... по завершению первого, или по выполнению из него session_write_close() или подобного . Также частоту выполнения можно ограничить, сохранением и проверкой времени успешного выполнения, касательно выполнения какого-либо действия конкретно.
0
|
||
|
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
|
||||
| 26.01.2025, 13:44 | ||||
|
0
|
||||
| 26.01.2025, 13:44 | |
|
Помогаю со студенческими работами здесь
15
транзакция Транзакция Транзакция
Транзакция Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|