Romantik
TeaM PHPClub
Глючит ALTER и INSERT в транзакции
Приветствую уважаемые.
Вот столкнулся с проблемой (попробую детально описать):
MySQL 3.23.55
таблицы были BerkeleyDB
потом перекомпилил под InnoDB
первая строчка warehouse в инсталяции добавляется.
с MyISAM работает на УРА, но нужна транзакция!
в транзакции необходимо сделать INSERT и ALTER
Транзакция успешно выполняется и SELECT * FROM warehouse
информирует о добавлении строчки.
Далее через пару секунд (при BDB нередко подвисал так, что умирала муська и показывала num_rows=2 хотя в базе SELECT показывал одну строчку)
SELECT показывает что добавленной строчки НЕТ!
Но добавленное поле существует, значит транзакция не откатилась!
Интересно дальше: обнуляю таблицы и пробую опять запустить скрипт. SELECT показывает ту добавленную строчку, котрую я добавлял ранее до обнуления!!! =))
подозревал на жесткий диск, но нет он в порядке!
Приветствую уважаемые.
Вот столкнулся с проблемой (попробую детально описать):
MySQL 3.23.55
таблицы были BerkeleyDB
потом перекомпилил под InnoDB
первая строчка warehouse в инсталяции добавляется.
с MyISAM работает на УРА, но нужна транзакция!
в транзакции необходимо сделать INSERT и ALTER
PHP:
<?
....
$db->autoCommit(false); #PEAR использую
$sql_alter="ALTER TABLE wares ADD ware1 double(10,5) DEFAULT '0' NOT NULL"; # пробовал и "ADD COLUMN"
$res_alter= $db->query($sql_alter);
$id = $db->nextId(sq_ware);
$sql = "INSERT INTO warehouse (id,name,user,stat) VALUES ('$id','$name','$user',1)";
$res = $db->query($sql);
if( ($res) AND ($res_alter) )
Header...
else
$db->rollback();
?>
информирует о добавлении строчки.
Далее через пару секунд (при BDB нередко подвисал так, что умирала муська и показывала num_rows=2 хотя в базе SELECT показывал одну строчку)
SELECT показывает что добавленной строчки НЕТ!
Но добавленное поле существует, значит транзакция не откатилась!
Интересно дальше: обнуляю таблицы и пробую опять запустить скрипт. SELECT показывает ту добавленную строчку, котрую я добавлял ранее до обнуления!!! =))
подозревал на жесткий диск, но нет он в порядке!