MySQL,复制表文件产生 "ERROR 1017 (HY000): Can' t find file :"even though its there there

标签 mysql

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

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

ERROR 1017 (HY000): Can't find file: './WhateverTableIQuery.frm' (errno: 13)

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

关于可能出现的问题有什么想法吗?

最佳答案

我建议尝试两件事:

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!

关于MySQL,复制表文件产生 "ERROR 1017 (HY000): Can' t find file :"even though its there there,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12106727/

相关文章:

MySQL 结合外连接

MySQL 将日期时间转换为 unixtime?

mysql 2 行中的多个值

php - MySQL - 避免 NULL 除以零

mysql - 如何将这两个 SQL 语句合并为一个?

php - 过滤过去24小时的sql查询

mysql - 用mysql中同一表的其他列行的值更新行

javascript - 如何每秒更新 Php 变量?来自 mySql 的变量

mysql - View 未被 mysqldump 转储

php - 使用先前值加上当前值更新每一行