mysql – 获取恢复的db文件以在重建的服务器上工作

我不得不重建我的服务器,并试图将数据库文件从旧驱动器复制到/ var / lib / mysql /.我重新启动了apache并运行’show databases’,这列出了所有的数据库.我输入了其中一个数据库’joomla’并运行’show tables’,这显示了我期望的所有表格.

但是,尝试运行诸如’SELECT * from bsf_session’之类的查询会出现错误:

ERROR 1146 (42S02): Table 'joomla.bsf_sessions' doesn't exist

检查我得到的表:

mysql> check table bsf_seminar;
+--------------------+-------+----------+---------------------------------------------------------+
| Table              | Op    | Msg_type | Msg_text                                                |
+--------------------+-------+----------+---------------------------------------------------------+
| joomla.bsf_seminar | check | Error    | Can't find file: './joomla/bsf_seminar.frm' (errno: 13) |
| joomla.bsf_seminar | check | error    | Corrupt                                                 |
+--------------------+-------+----------+---------------------------------------------------------+
2 rows in set (0.00 sec)

当我复制文件时,我更改权限以匹配mysql表的权限,但是我无法更改所有权,文件当前看起来像这样(ls -g):

-rw-rw---- 1 root   8842 2012-02-23 09:54 bsf_session.frm
-rw-rw---- 1 root 271012 2012-02-23 09:54 bsf_session.MYD
-rw-rw---- 1 root  25600 2012-02-23 09:54 bsf_session.MYI

我试过跑

chown mysql bsf_session.frm

但这没有什么区别.我不知道这是否与主要问题有关.

我真的很感激你能给予的任何帮助……

我在*上问过这个问题,我也建议在这里问一下……

解决方法:

如果MySQL服务器的用户没有读取和写入文件的权限,则服务器将无法识别该表.通常服务器在’mysql’用户下运行.

在尝试更改所有权之前,我会先停止你的mysql实例.

完成后,(从非root用户)在包含文件的目录中执行sudo chown mysql bsf_session.*.

您也可以尝试更改组(sudo chgrp mysql bsf_session.*),但是将文件作为服务器的所有者是最佳选择.

如果您没有sudo权限或root权限,那么您需要联系谁让他们更改所有权.

上一篇:mysql – 表被标记为崩溃,应该修复


下一篇:c# – 如何使用TSQL语法将.bak恢复到新数据库?