скрипт восстановления таблицы smf_topics

Автор dmmb, 03 сентября 2009, 11:18:49

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

dmmb

в результате аварии на сервере побились жесткие диски и удалось таки восстановить почти всю базу данных кроме этой таблицы. она пустая. но как оказалось без нее форум работать не может.

нужен скрипт который бы собрал данные в неё из других таблиц.

smf 2.0 rc 1.2

связь через личку или icq 278309850

BIOHAZARD

нет такой таблицы ни в smf 1.1.10 ни в smf 2.0

возможно какой то мод?
тогда проще поставить чистый форум и он без неё обойдётся
Мои моды:
  • RedirectPage
  • Counters
  • CustomSearch
  • SypexDumper
   адаптирую темы    1.1.хx<=>2.0задавая вопросы, старайтесь сразу указывать конечную цель, предполагаемый Вами путь не обязательно окажется самым коротким

Любые моды на заказ

dmmb

пардон. голова уже кругом, сутки не спавши.

таблица smf_topics конечно же.

dmmb

просто как назло. все остальное удалось собрать по частям. а в этой таблице хранятся ссылки на все топики. в результате все есть, но ничего не открыть, ни одной темы.

bbbbbb

#4
таблица само по себе стоит?

зайди в консоль и исправь REPAIR TABLE smf_topics

вот скрипт, чтобы восстановить все таблицы во всех базах!! написал ради отечесва!!

#!/usr/bin/perl


use DBI;


my $db_name = 'mysql';

    # user from db
my   $db_user = 'root';
my   $db_pass = '';
my   $db_type = 'mysql';
my   $db_host = 'localhost';

    my $dbh = DBI->connect(
"DBI:$db_type:database=$db_name;host=$db_host",
        $db_user,
        $db_pass,
        { RaiseError => 1,
         PrintError => 1 }
    ) || die $DBI::errstr;
   
   

       my $sth = $dbh->prepare(
       'select Db from db'
                             );
        $sth->execute();
   my $loop_data;
    push @{$loop_data}, $_ while $_ = $sth->fetchrow_hashref();   
   
    $sth->finish();
$dbh->disconnect();

   foreach my $ii( @{$loop_data})  {

my $db_name = $ii->{Db};

    # user from db
my   $db_user = 'root';
my   $db_pass = '';
my   $db_type = 'mysql';
my   $db_host = 'localhost';

    my $dbh = DBI->connect(
"DBI:$db_type:database=$db_name;host=$db_host",
        $db_user,
        $db_pass
     
    );
   
    my $loop_data2 ;

eval {
    #my $loop_data2 = $dbh->selectrow_hashref(
    #    "show tables",
    #    { undef }         
    #);
   
       my $sth = $dbh->prepare(
       'show tables' );
            $sth->execute();

#    push @{$loop_data2}, $_ while $_ = $sth->fetchrow_hashref();     
#     $sth->finish();
     
while( my @row = $sth->fetchrow_array ) {

die "bad table name: $row[0]" unless $row[0] =~ /^[\w_]+$/;
push @{$loop_data2}, $row[0];

}     
   
};

if ($@) {
next;
}   
   
   
#    use Data::Dumper;
#    print Dumper($loop_data2);
   
#    return;   
   

#       my $sth = $dbh->prepare(
#       'show tables'
#                             );
                             
                             
                             
#       $sth->execute();
  #      my $rows;
#while( my @row = $sth->fetchrow_array ) {
#
#die "bad table name: $row[0]" unless $row[0] =~ /^[\w_]+$/;
#push @{$rows}, $row[0];
#}
#       $sth->finish();

       
              foreach $_( @{$loop_data2}) {
        $dbh->do(qq{REPAIR TABLE $_ },
           undef, undef);
              }
             
                #  use Data::Dumper;
    #  print Dumper($loop_data2);
     
    #  return;

$dbh->disconnect();



}       
       

   
#    use Data::Dumper;
#    print Dumper($rows);

   
# print "@{[%$rows]}\n";

dmmb

проблема не в репейре таблицы. а в том что были уничтоженны физические файлы в мускуле от этой таблицы. тоесть проще говоря таблица очистилась. я переименовал её и создал новую такую же. встроенный скрипт форума нахождения ошибок - ничего не находит. пишет ошибок нет. но ни один линк на топик не работает. пишет что темы нет, хотя в таблице smf_messages они все есть.

bbbbbb

тю, точно я не дочитал первый пост...

а скоко стоит?

ты тоступ даш?

и как срочно это надо сделать?

а почему бэкапа нету?

и сколько база занимает?

dmmb

доступ дать не могу, поскольку бекап восстановлен на локальной машине пока.

доступ дам на чистый форум установленный на хосте+ftp+phpmyadmin

срочно

бекапы были но побился жесткий диск и после восстановления рейда часть данных ушла и восстанавливал из трех бекапов базу данных. только эту таблицу не смог восстановить.

по деньгам - если сделаешь думаю в любом случае договоримся. не в деньгах счастье, когда любимый форум умер.

bbbbbb

ясненько... я у меня работы хватает тут, что уписятся можно, если никого не найдешь который быстро сделать  - напиши в личку...

бэкапы надо хранить на другом сервере!!! иначе смысма нету от бэкапа...

а что там случилсоь, из-за питания все вылетило?

dmmb

что случилось хостер замалчивает, но весь датацентр лежал вчера утром. беапы на сторону теперь уже делаю. договорился со знакомыми обменяться местом под бекапы.

bbbbbb

а ты уверен что другеи таблицы целы?

dmmb

да. каждую руками открывал и проверял. собирал из трех бекапов, в каждом было побито что-то свое.

Mavn

SimpleMachines Russian Community Team
п.1 Пройду курсы гадалок для определения исходного кода по скриншоту.

п.2 У вас нет желания читать правила раздела, у меня нет желания одобрять темы, которые не соответствуют этим правилам.

dmmb

сейчас залил уже востановленную из бекапа базу на хост, чтобы можно было через phpmyadmin в неё попасть.


dmmb

все удалось. решение подсказанное digger в личке, сработало.

лишний раз убедился что smf достаточно продуманное и мощное приложение.

digger, если скинешь в личку wmr кошелек - с меня ящик пива. спасибо огромное!!

Krazy

#15
А как удалось восстановить, не подскажите?

--------

Фух, кнопка исправить любые ошибки в обслуживании форума помогла. Только почему-то не с первого раза.