首先得有对应表的idb文件以及建表语句
1.首先在新数据库建表
CREATE TABLE `sys_menu` (`id` bigint(20) NOT NULL,`parent_id` bigint(20) NULL DEFAULT NULL,`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`type` int(11) NULL DEFAULT NULL,`path` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`component` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`perms` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`icon` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,`sort_value` int(11) NULL DEFAULT NULL,`status` int(11) NULL DEFAULT NULL,`create_time` datetime NULL DEFAULT NULL,`update_time` datetime NULL DEFAULT NULL,`is_delete` int(11) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;
2.建好表后将表和表空间解除联系
alter table sys_menu discard tablespace;
3.去mysql的data路径看对应表的idb文件,此时该文件应该是不在了的,如果还在就得看看什么问题了
cd /var/lib/mysql/test
ll
然后将idb文件cp到该目录
cp sys_menu /var/lib/mysql/test
并设置权限
chown mysql:mysql sys_menu.ibd
4.然后执行
alter table sys_menu import tablespace;
将表与当前idb文件建立联系。成功就ok了。可以看到表里已经有数据了