Имя: Пароль:
IT
Веб-мастеринг
MySQL - почему не откатывается транзакция?
0 vde69
 
04.01.20
11:19
собственно идет запись только в одну таблицу, по чему не работает откат транзакции ?
код на PHP

if ( $this->mysqli->begin_transaction() ) {
    try{
        
        $err = false;
        // добавляем в первую таблицу
        $sql_1 = "INSERT INTO Files (Active,Type,Path,Name,Extension,Path_OLD) \n"
            . "VALUES (0, 0, \"".$Path."\",\"".$Name."\",\"".$Extension."\", \"\")";

        if ($this->mysqli->query($sql_1) == false) { $err = true; }                
                    
        // получем ID автоинкремента
        $ID_Files = $this->mysqli->insert_id();

        if ( $ID_Files == 0 ) { $err = true; }
                        
        $sql_2 = "INSERT INTO Files_CRC (CRC,FG_CRC,ID_Files) \n"
            . "VALUES (\"".$CRC."\", \"".$FG_CRC."\", \"".$ID_Files."\")";
                        
        if ($this->mysqli->query($sql_2) == false) { $err = true; }                

        if ( $err ) {
            $this->mysqli->rollback();
        } else {
            $this->mysqli->commit();
        }
                    
    }catch(Exception $e){
        $this->mysqli->rollback();
        throw $e;
    }
}


ну и попутный вопрос - как правильно инсертить сразу 2 таблицы связанных по авто инкрементирумемо полю
1 vde69
 
04.01.20
11:27
(0)+ добавлю,

в строке " $ID_Files = $this->mysqli->insert_id();" синтаксическая ошибка, я это знаю, главный вопрос - почему транзакция не откатывается?
2 vde69
 
04.01.20
12:07
нашел причину, таблицы MyISAM ... блин...
3 vde69
 
04.01.20
12:21
блин, у меня MySQL вообще не поддерживает транзакции

SHOW ENGINES

CSV,MRG_MYISAM,MEMORY,MyISAM


вот теперь буду думать :(
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший