数据库数据丢失/mysql

数据库数据丢失/mysql

我重新格式化了我的 PC,并重新安装了 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 文件。但我不确定这些是否是实际数据,因为只有大约 2mb 的数据,而实际上我记得我的数据应该有大约 4mb。

我强烈认为我的数据仍然存在,但 phpmyadmin 可能只是不知道如何恢复它。

非常感谢您的帮助!

答案1

datadir首先,使用以下命令验证您是否具有正确信息:

SHOW VARIABLES LIKE 'datadir';

这将为您提供一个包含更多基于数据库名称的目录的目录。在每个目录中,您应该看到三种类型的文件:

  • .frm包含表定义,但不包含实际数据。
  • .myd包含原始表数据。(MyISAM)
  • .myi包含您定义的任何表索引。(MyISAM)
  • .ibd包含组合格式的索引和数据。(InnoDB)

这就是棘手的地方。InnoDB(您在评论中提到您正在使用)具有表空间的概念,与 Oracle 非常相似。也就是说,如果您已将其配置为这样做,它会将系统上的文件分离到不同的命名空间中;否则,它会将所有内容存储在系统表空间。它通常位于名为的文件中ibdata#,其中的数字可能会发生变化。如果该文件消失了,那么您的数据就消失了。很可能您重新安装 MySQL 时备份了该文件并将其放入标准系统文件中——但您需要查看一下。

供将来参考,您基于每个文件创建这些表,这样你就可以使用表 1. innodb_file_per_table配置选项。

相关内容