MySQL,复制表文件引起“ERROR 1017(HY000):找不到文件:”即使它在那里

时间:2012-08-24 09:33:16

标签: mysql

我想将数据库表从我的生产服务器复制到本地测试机器,这样我就可以执行真实数据的测试(副本)。

我停止了mysql并删除了所有的frm,MYD和MYI文件。在这里启动mysql并查询show tables会给出一个空结果集。然后我关闭了mysql并从服务器复制了所有frm,MYD和MYI文件。当启动mysql“show tables”按预期显示表但尝试查询它时,我收到错误消息

  

ERROR 1017(HY000):找不到文件:'./WhateverTableIQuery.frm'   (错误:13)

但WhateverTableIQuery.frm文件位于光盘上,与服务器上的文件相同。

关于可能出现什么问题的任何想法?

7 个答案:

答案 0 :(得分:34)

我建议尝试两件事:

<强> 1。查看权限

确保您的MySQL数据目录及其中的所有文件归mysql用户和mysql组所有。如果您以root用户身份将文件复制到本地测试计算机上,则可能不是这种情况:

chown -R mysql:mysql your-mysql-data-dir-here

<强> 2。修复损坏的表格

使用mysqlcheck检查损坏的表并在发现任何表时进行修复:

mysqlcheck -u root -p --auto-repair --all-databases

如果你之后仍然无法使用这些表,那就给mysqldump一个去吧!

答案 1 :(得分:2)

使用frm和MYD文件恢复MySQL数据库后,我遇到了同样的问题。花了好几个小时后,我发现我已经配置了数据库目录,只对mysql用户具有读写权限,但没有执行权限。向数据库目录添加执行权限后,问题就解决了。

答案 2 :(得分:0)

几分钟前我确实遇到了同样的问题,我花了几分钟才意识到我没有足够的权限来访问我想导入的.sql文件。

为了解决这个问题,您可以将文件移动到您知道可以访问的位置(与您当前的用户一起)。 (例如〜/ Home_directory)。

我希望我能帮助一些正在寻找答案的孤独的灵魂。就像我一样。

答案 3 :(得分:0)

我有同样的问题并做了这个......

  • 删除迁移文件夹
  • 删除_migrationhistory表
  • 启用,添加和更新迁移

我确定有更好的方法可以解决这个问题,但这对我有用。

答案 4 :(得分:0)

我更改了mysql-data-directory和{{1}}文件的权限 如果以root用户身份使用:

  • chmod 600 mysql-data-directory chmod 600
  • MySQL的数据的目录/ tableOfData.frm

如果以非root用户身份使用:

  • chmod 660 mysql-data-directory
  • chmod 660 mysql-data-directory / tableOfData.frm

答案 5 :(得分:0)

此错误,&#34;一般错误:1017无法找到文件&#34;,如果表格不存在,也会在带有WAMP的Windows上发生。

答案 6 :(得分:0)

尝试以下事项:

  • 修复整个数据库
  • 更改mysql的权限:mysql
  • 重启mysql服务

其中一个可行。