13

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

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

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

但是 WhatTableIQuery.frm 文件在光盘上,并且与服务器上的文件相同。

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

4

7 回答 7

35

我建议尝试两件事:

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 吧!

于 2012-08-24T11:21:03.853 回答
3

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

于 2013-10-27T04:47:17.223 回答
0

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

为了摆脱这个问题,你可以将文件移动到你知道你可以访问的地方(与你当前的用户一起)。(例如~/Home_directory)。

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

于 2014-09-08T19:12:12.927 回答
0

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

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

我确信有更好的方法来解决这个问题,但是它对我有用。

于 2015-08-05T03:03:22.423 回答
0

我更改了 mysql-data-directory 以及<table>.frm文件的权限。
如果以 root 用户身份使用:

  • chmod 600 mysql 数据目录 chmod 600
  • mysql-数据目录/tableOfData.frm

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

  • chmod 660 mysql 数据目录
  • chmod 660 mysql-数据目录/tableOfData.frm
于 2015-11-24T21:20:23.083 回答
0

如果表不存在,此错误“一般错误:1017 找不到文件”也发生在带有 WAMP 的 Windows 上。

于 2016-02-26T09:19:57.353 回答
0

尝试以下操作:

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

其中之一将起作用。

于 2017-04-13T11:16:04.277 回答