Я подтвердил, что механизм БД — innoDB:
Код: Выделить всё
Name Engine Version Row_format
order_fulfillment_discounts InnoDB 10 Dynamic
Код: Выделить всё
$dbConnect = mysqli_connect("localhost", "root", "", "dealers");
$dbConnect->autocommit(false);
$dbConnect->begin_transaction();
$dbConnect->query("INSERT INTO order_fulfillment_discounts (fulfillment_id, order_id, discount_id, discount_type, discount_category) VALUES (1,1,1,'foo','test')");
$dbConnect->commit();
$dbConnect->rollback();
Коммит работает нормально, я могу отладить и увидеть, что вставка не происходит до тех пор, пока не будет вызвана функция commit(), поэтому я знаю, что транзакции в целом работают. Результат фиксации — TRUE, и результат отката также TRUE.
Я запускаю это на локальном хосте на Mac, используя PHP 8 с Homebrew. Есть ли вероятность того, что этот параметр/разрешение предотвращает откат в целях безопасности?
Пользователь root DB имеет все разрешения, и я даже добавил пароль к базе данных, чтобы посмотреть, поможет ли это.Я запускал его как в phpstorm, так и в браузере.
Я отлаживал его, поэтому между фиксацией и откатом есть время, а также запускаю его с помощью Sleep().
Я попытались указать имя транзакции.
Все работает одинаково: фиксация всегда работает как положено, а откат — нет.
Подробнее здесь: https://stackoverflow.com/questions/792 ... nodb-table
Мобильная версия