我不得不重建我的服务器并试图将数据库文件从旧驱动器复制到 /var/lib/mysql/。我已经重新启动了 apache 并运行了“show databases”,这列出了所有的数据库。我已经输入了这些数据库之一“joomla”并运行“show tables”,这会显示我期望的所有表。
但是,尝试运行诸如 'SELECT * from bsf_session' 之类的查询会出现错误:
ERROR 1146 (42S02): Table 'joomla.bsf_sessions' doesn't exist
Run Code Online (Sandbox Code Playgroud)
检查我得到的表:
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)
Run Code Online (Sandbox Code Playgroud)
当我复制文件时,我更改了权限以匹配 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
Run Code Online (Sandbox Code Playgroud)
我试过跑
chown mysql bsf_session.frm
Run Code Online (Sandbox Code Playgroud)
但这没什么区别。我不知道这是否与主要问题有关。
我真的很感激你能提供的任何帮助......
我在stackoverflow上问过这个问题,并被推荐在这里问它......
如果用户认为MySQL服务器没有读写该文件的权限,那么服务器将无法识别该表。通常服务器在“mysql”用户下运行。
在尝试更改所有权之前,我会首先停止您的 mysql 实例。
完成后,然后(从非 root 用户)sudo chown mysql bsf_session.*
在目录中执行文件操作。
您也可以尝试更改组 ( sudo chgrp mysql bsf_session.*
),但是最好的选择是让文件与服务器具有相同的所有者。
如果您没有 sudo 权限或 root 访问权限,那么您将需要联系拥有该权限的人,让他们更改所有权。
归档时间: |
|
查看次数: |
1327 次 |
最近记录: |