搜索

首页  >  问答  >  正文

解析MYD、MYI、FRM文件的方法

<p>我在这个论坛和其他地方读了几篇帖子,但仍然无法读取一些包含我想要导入到SQL Server的数据的MYD/MYI/FRM文件。</p> <ul> <li>我停止了客户端位置的MySQL服务,并复制了所有文件(与我们在SQL Server上的操作方式相同)。</li> <li>我在我的Windows 10 PC上安装了最新的MySQL ODBC连接器、MySQL引擎和MySQL Workbench。引擎正在运行,ODBC连接器已配置了用户名和密码。使用Workbench,我成功登录了。</li> <li>我创建了一个名为MyTest的数据库,它创建了一个C:\ProgramData\MySQL\MySQL Server 8.0\Data\mytest文件夹。</li> <li>我停止了MySQL服务,并将MyData.MYD、MyData.MYI和MyData.FRM复制到mytest文件夹中。</li> <li>我重新启动了MySQL服务。</li> </ul> <p>但是,如果我在Workbench或使用MySQL 8.0命令行客户端运行"Select * from mytest.MyData"查询,它会一直提示表mytest.MyData不存在。现在,我读到可能适合运行CHOWN命令,但是我不知道在Windows系统中语法是否会有所不同,以及这个命令是否可以直接从命令提示符中执行。</p> <p>任何帮助将不胜感激。谢谢!</p>
P粉604848588P粉604848588466 天前674

全部回复(1)我来回复

  • P粉015402013

    P粉0154020132023-08-26 09:51:58

    旧版本的MySQL允许您在MyISAM表中这样操作,但是MySQL 8.0引入了一个全新的“数据字典”实现,它是一个在内部维护的元数据库,并且对InnoDB比MyISAM有偏好。因此,我相信随意移动文件的方式不再像以前那样有效。要将表从一个实例移动到另一个实例,您应该正确地执行导出和导入步骤。

    对于InnoDB,您可以使用可传输表空间。至少这样您不必执行完整的数据导入,但是需要比仅仅复制文件多几个步骤。

    P.S.:我多年来一直没有使用MyISAM。我更喜欢我的数据库支持ACID属性,而MyISAM不支持任何ACID属性。

    回复
    0
  • 取消回复