Как восстановить структуру базы данных MySQL

Тема в разделе "Как сделать...", создана пользователем VarrkaN, 6 апр 2012.

  1. VarrkaN

    VarrkaN Создатель

    Регистр.:
    10 окт 2008
    Сообщения:
    15
    Симпатии:
    0
    В общем проблема такая: есть скрипт без дампа базы данных, соотвественно неработоспособный, как наиболее удобно узнать названия таблиц и названия и типы их полей, не перелопачивая весь скрипт? Если это конечно возможно, заранее извиняюсь если написал не в тот раздел...
     
  2. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.185
    Боюсь, что никак, брал такую работу на фрилансе - помог только вдумчивый анализ кода.
     
  3. dirdir

    dirdir Постоялец

    Регистр.:
    19 мар 2012
    Сообщения:
    85
    Симпатии:
    11
    Тяжёлый вопрос. Может быть найти поиском все места где используется вызов Mysql функций (mysql_query и т.п.). Т.е. написать парсер для этих задач. Парсер вернёт все вызовы обращений к бд. А затем по найденным местам создать таблицы. Затем запустить скрипт, и он будет выдавать ошибки, что нет таких-то таблиц. И досоздать таблицы уже.
     
  4. DrakonHaSh

    DrakonHaSh

    Регистр.:
    29 июн 2010
    Сообщения:
    358
    Симпатии:
    122
    согласен с предыдущим оратором (#2), можно только частично облегчить себе труд:
    заменить в скрипте все вызовы mysql_query (или через что там обращение к базе у этого скрипта) на свой MY_mysql_query

    что-то типа:
    PHP:
    function MY_mysql_query($query)
    {
      
    ob_start();
      echo 
    "<hr>".date("m.d.y H:i:s")."<br>Query:<b>$query</b><br><pre>Stack:<br>";
      
    debug_print_backtrace();
      echo 
    "</pre>";
      
    $log ob_get_contents();
      
    ob_end_clean();
      
    #echo $log;
      
    file_put_contents("log.htm"$logFILE_APPEND); 
      return 
    "";
    }
     
  5. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.185
    Имхо излишняя работа, искать можно тоталкомандером или npp.
    Обращения скрипта к бд не всегда помогают восстановить структуру, мне повезло была админка(таки стоит начинать анализ с неё) и по sql-запросам на update, insert было легче восстановить поля базы. Но так же были и глобальные настройки, которые получались из базы, а потом как элементы массива вызывались в непредсказуемых местах скрипта, частично их помог отловить включенный режим вывода ошибок php Error_Reporting(8191); а частично анализ кода.
     
  6. VarrkaN

    VarrkaN Создатель

    Регистр.:
    10 окт 2008
    Сообщения:
    15
    Симпатии:
    0
    Структуру востановить удалось, как узнать типы полей? int, varchar и т.д?
     
  7. latteo

    latteo Эффективное использование PHP, MySQL

    Moderator
    Регистр.:
    28 фев 2008
    Сообщения:
    1.403
    Симпатии:
    1.185
    Чисто интуитивно ну и смотри как оно используется в коде:)