sql - 数据库的原始副本导致 `Can' t 查找文件 :`

标签 sql mysql database

为了更快地迁移数据库,我尝试将数据库的原始文件(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_partioninghave_partition_engine 的值(具体取决于您的版本) mysql)。

更多信息可以在 documentation 中找到。 .

关于sql - 数据库的原始副本导致 `Can' t 查找文件 :`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3790996/

相关文章:

MySQL 外键和外部参照表

php - 查找列中的最高值,在该列中插入一个比该列高 1 个数字的新记录

database - HANA 中的 ADBC 临时表

mysql - 测验应用程序的数据库设计

sql - 使用 TOAD 从 Oracle 创建更新脚本

mysql - 使用一条语句在 MySQL 中添加多列

sql - 具有多个条件的 SQL 选择查询的时间复杂度

mysql - SQL : Creating new columns using Case When, 分组 ID

php - 使用 php 以不同方式查看数据库

java - Firebase 存储 - 用户没有权限