为了更快地迁移数据库,我尝试将数据库的原始文件(MYD 和 MYI)文件复制到另一台计算机中。除了两个已分区的表外,所有表都工作正常。我的目录结构如下所示:
table1.frm
table1.MYI
table1.MYD
table2.frm
table2.par
table2#P#p0.MYD
table2#P#p0.MYI
table2#P#p1.MYD
table2#P#p1.MYI
table3.frm
table3.par
table3#P#p0.MYD
table3#P#p0.MYI
table3#P#p1.MYD
table3#P#p1.MYI
以下内容产生错误:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+
3 rows in set (0.06 sec)
mysql> use test;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_test |
+---------------------------+
| table1 |
| table2 |
| table3 |
+---------------------------+
3 rows in set (0.00 sec)
mysql> explain table1;
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| a | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+----------------+
2 rows in set (0.01 sec)
mysql> explain table2;
ERROR 1017 (HY000): Can't find file: 'table2' (errno: 2)
mysql> explain table3;
ERROR 1017 (HY000): Can't find file: 'table3' (errno: 2)
mysql> check TABLE table2;
+--------------------------+-------+----------+--------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+--------------------------+-------+----------+--------------------------------------------------+
| test.table2 | check | Error | Can't find file: 'table2' (errno: 2) |
| test.table2 | check | error | Corrupt |
+--------------------------+-------+----------+--------------------------------------------------+
2 rows in set (0.00 sec)
我检查了权限,一切看起来都很好。我尝试修复,但似乎也不起作用。有什么可以做的吗?
最佳答案
您将其移植到的服务器可能未启用分区。
尝试 SHOW VARIABLES LIKE '%partition%';
并检查变量 have_partioning
或 have_partition_engine
的值(具体取决于您的版本) mysql)。
更多信息可以在 documentation 中找到。 .
关于sql - 数据库的原始副本导致 `Can' t 查找文件 :`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3790996/