Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Innodb, TRUNCATE
цитата
19/09/10 в 11:55
 FXIX
хз, может кто-то натыкался на такой глюк. Есть innodb таблица. в нее скрипт пишет данные (скрипт на BDSimple). простой скрипт:

public function setContentRaw($val) {
foreach ($val['article'] as $val2) {
$row = array(
'source_id' => $val['id'],
'url' => $val2['url'],
'title' => $val2['title'],
'date' => date('Y-m-d'),
);
$id = $this->connect->query("INSERT INTO `" . DATABASE . "`.`" . TB_CONTENT_RAW . "` SET ?a", $row);
echo $id . '<br />'; // Вернет ID-ы вставленных записей
}
}

Создаем БД, создаем таблицу. Запускаем скрипт. Отрабатывает нормально (т.е. пишет в базу). Очищаем таблицу, - в phpmyadmin тыкаем галку на корзину (что вызывает оператор truncate table). снова прогоняем скрипт - в таблицу не пишет. Если очистить таблицу через "выделить все строки - нажать крестик" - т.е. очистить построково. Снова запустить скрипт - пишет. т.е. все работает. Т.е. после операции truncate table скрипт в чистую таблицу не пишет нихера данные. Если самому руками создать строчку, потом ее удалить, потом прогнать опять скрипт - то все в поряде. Что за целка непробиваемая после truncate?
цитата
19/09/10 в 12:51
 Еugene
поле автоинкрементное есть?

попробуй сделать
ALTER TABLE `table_name` AUTO_INCREMENT =1
после truncate
цитата
19/09/10 в 13:10
 Stek
Может у тебя phpmyadmin косячит ? После truncate таблица в каком состоянии, чистая ? Если select в ней сделать, что будет ?
Плюс прогнать проверку на ошибки.
цитата
19/09/10 в 15:07
 Pentarh
С инной редко имею дело, но по моему там очищать таблицу надо через DELETE. Где то в магах читал
цитата
19/09/10 в 19:46
 FXIX
спасибо други буду тестить. отпишусь
Pentarh: truncate итак очищает через delete если в таблице есть foreign key (в данном случае нет), а если нет то таблица удаляется и потом создается. автоинкремент на ноль
Stek: пхпадмин последний. мускуль 5.1.48-community. Стек а как ошибки посмотреть? логи? скрипт консольный. ошибок не выдает вообще никаких
цитата
19/09/10 в 21:17
 Dr.Syshalt
Не гадай, просто включи query log и глянь, что там происходит. А то кусочек кода, неизвестная база без DDL и "люди добрые, погадайте, в чем там дело, поломайте голову" icon_wink.gif
цитата
19/09/10 в 21:41
 Stek
FXIX: в самом phpmyadmin посмотри пункты проверки таблиц на ошибки.

Цитата:
truncate итак очищает через delete если в таблице есть foreign key (в данном случае нет), а если нет то таблица удаляется и потом создается. автоинкремент на ноль

Не совсем так. С MyIsam таблица дропается и пересоздается заново. В InnoDB вроде просто через delete , хотя в новых версиях mysql обещали как то улучшить это дело.
цитата
22/09/10 в 18:24
 leroy_17
да ты не первый такой

http://bugs.mysql.com/bug.php?id=11946


Эта страница в полной версии