我不得不重建我的服务器,并试图将数据库文件从旧驱动器复制到/ 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权限,那么您需要联系谁让他们更改所有权.