Назад | Перейти на главную страницу

данные базы данных потеряны / mysql

Я переформатировал свой компьютер и переустановил свою установку xampp, но никогда не перезаписывал папку mysql (опция в установке xampp) и не создавал резервную копию таблицы базы данных, думая, что это безопасно! (о чем я только думал?)

Теперь Myphpmyadmin показывает, что существуют таблицы - mydatabase (294)! но при нажатии показывает таблицы mydatabase (0) - таблиц не найдено !!! запуск моего сайта на drupal дает мне:

DOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mydrupaldatabase.semaphore' doesn't exist: SELECT expire, value FROM {semaphore} WHERE name = :name; Array ( [:name] => variable_init ) in lock_may_be_available() (line 167 of F:\xampp\htdocs\mydrupalsite\includes\lock.inc)....

внутри моей папки mysql / data / mydrupaldatabase / я вижу, что есть все файлы * .frm для моей базы данных. Но я не уверен, что это настоящие данные, потому что их всего около 2 МБ, хотя на самом деле я помню, что моих данных должно быть около 4 МБ.

Я уверен, что мои данные все еще там, но phpmyadmin, вероятно, просто не понимает, как их восстановить.

Любая помощь очень ценится!

Сначала убедитесь, что у вас правильный datadir используя:

SHOW VARIABLES LIKE 'datadir';

Это должно дать вам каталог, который содержит больше каталогов на основе имен баз данных. Внутри каждого из них вы должны увидеть три типа файлов:

  • .frm содержит определение таблицы, но не содержит фактических данных.
  • .myd содержит необработанные данные таблицы. (MyISAM)
  • .myi содержит любые определенные вами индексы таблиц. (MyISAM)
  • .ibd содержит индексы и данные в комбинированном формате. (InnoDB)

Вот где возникают сложности. InnoDB (который вы упомянули в комментариях, это то, что вы используете) имеет понятие табличных пространств, как и Oracle. То есть он разделяет файлы в системе на разные пространства имен, если вы настроили это для этого; в противном случае он хранит все в системное табличное пространство. Обычно это файл с именем ibdata#, где число может меняться. Если его нет, значит, ваши данные исчезли. Очень вероятно, что ваша переустановка MySQL создала резервную копию файла и поместила его в стандартный системный файл, но вам нужно посмотреть и увидеть.

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