Не экспортирует некоторые базы (с одной записью?)

Что-то не работает? Пишите здесь.

Не экспортирует некоторые базы (с одной записью?)

UNREAD_POST nckm » 10.03.2017 19:50:23

Довольно долго пользовался sypex и думал что это отличный инструмент.
Ежедневно он у меня делал архивы, то есть я думал, что делал архивы наверное больше года.
Оказывается, что нет и я не сразу это заметил. Мне кажется такого раньше не было?

Некоторые таблицы не экспортировались. Кажется это InnoDb и если одна запись, то экспорта записей не происходит.
Нашел похожую проблему на форуме
viewtopic.php?f=3&t=1446&p=4937&hilit=jlyf+pfgbcm+%D0%BE%D0%B4%D0%BD%D0%B0+%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C#p4937

Но не знаю - это как-то решилось или нет?
nckm
 
Сообщения: 2
Зарегистрирован: 10.03.2017 19:36:01

Re: Не экспортирует некоторые базы (с одной записью?)

UNREAD_POST nckm » 11.03.2017 16:40:22

Я сделал некоторые изменения в sxd/index.php и вроде бы теперь работает.
НО!!!!!!
Мне нужно, чтобы кто-то посмотрел на мои исправления и сказал, можно ли так вообще делать.
Дело в том, что я вообще не знаю языка php и языка запросов mysql и поэтому для меня все это довольно таки филькина грамота..

В общем, пожалуйста посмотрите:

Код: Выделить всё
                  elseif(sxd_check($n, $object['TA'], $filter['TA'])){
                     $engine = V_MYSQL > 40101 ? $item['Engine'] : $item['Type'];
                     $t = in_array($engine, $only_create) ? 'TC' : 'TA';
                  }
                  elseif(sxd_check($n, $object['TC'], $filter['TC'])) {
                     $t = 'TC';
                     $item['Rows'] = $item['Data_length'] = '';
                  }
                  else continue;
$rowcnt = mysql_query('SELECT COUNT(*) from ' . $n);
$item['OldRows'] = $item['Rows'];
$item['Rows'] = mysql_result($rowcnt,0);
                  $todo['TA'][]   = array($t, $n, !empty($item['Collation']) ? $item['Collation'] : '', $item['Auto_increment'], $item['Rows'], $item['Data_length'], $item['OldRows']);
                  $header['TA'][] = "{$n}`{$item['Rows']}`{$item['Data_length']}";
                  $tabs++;
                  $rows += $item['Rows'];


Тут я пытаюсь самостоятельно определить число строк в таблице и модифицирую $item['Rows'] в "правильное значение". Старое же сохраняю в $item['OldRows'] и оно потом передается дальше в функцию $this->runBackupJob();

Дальше

Код: Выделить всё
                      $fcache .= "#\tTC`{$n[1]}`{$n[2]}\t;\n{$item['Create Table']}\t;\n";
                      $warn = $n[4] != $n[6] ? " Wrong num?" : " *";
                      $this->addLog(sprintf($this->LNG['backup_TC'], $n[1]) . "records: " . $n[4] . "/" . $n[6] . $warn );
                        $this->rtl[7] = 0;
                      if($n[0] == 'TC' || !$n[4]) break;
                      // Бэкапим данные таблицы
                     $fcache .= "#\tTD`{$n[1]}`{$n[2]}\t;\nINSERT INTO `{$n[1]}` VALUES \n";
                  }
                  else {


В лог я пишу не просто "Экспорт таблицы" с ее именем, но и число записей, кроме того вывожу предупреждение "Wrong num?" для тех таблиц, которые ошибочно не экспортировали строку таблицы.

Как я понял в InnoDb есть какая-то проблема с определением числа строк?
У меня базы с InnoDb содержащие одну строку перестали экспортировать данные.
Почему не знаю.

Вот с моим патчем вроде бы заработало.
Но можно ли этим теперь пользоваться?
nckm
 
Сообщения: 2
Зарегистрирован: 10.03.2017 19:36:01


Вернуться в Проблемы и баги

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Яндекс.Метрика