onPHP / onphp-framework

onPHP is the mature GPL'ed multi-purpose object-oriented PHP framework.
85 stars 52 forks source link

MySQLim никто не использует что ли, все на постгресе сидят?! #218

Closed DeryabinSergey closed 6 years ago

DeryabinSergey commented 9 years ago

Словил очень старый и очень неприятный баг: http://bugs.mysql.com/bug.php?id=5035 Версия MySQL у меня 5.5.40 PHP 5.5.9 Смысл в том, что по умолчанию установлен autocommit и при возникновении Exception произойдет автокоммит данных, например:

            try {
                $transaction = InnerTransaction::begin($image->dao());
                $image = $image->dao()->add($image);
                throw new Exception();
                $transaction->commit();
            } catch(Exception $e) {
                $transaction->rollback();
            }

Здесь данные успешно лягут в базу. Лечится добавлением в метод connect класса MySQLim после запроса с кодировкой: mysqli_autocommit($this->link, false);