【问题标题】:How can I explore mysql database files (*.frm, *.myd and *.myi) without MySQL?如何在没有 MySQL 的情况下探索 mysql 数据库文件(*.frm、*.myd 和 *.myi)?
【发布时间】:2011-12-25 13:47:52
【问题描述】:

我们产品的旧版本允许在单个存档文件中捕获系统的当前状态,该存档文件还包含 MySQL 数据库文件 - 大量 三倍。

现在我们有了下一代产品,它不会像抓取数据库文件那样做傻事,但它必须知道读取旧版本产生的档案。

我们的产品是商业闭源产品,但不是很贵。我们不得不停止使用 MySQL,因为第二个原因(Oracle 更改了 MySQL 许可),我们不能使用 MariaDB,因为第一个原因(他们的许可吓坏了公司律师)。

那么,我的问题是还有其他方法可以读取这些 MySQL 数据库文件吗?商业轻量级解决方案很好 - 毕竟,我们谈论的是数据库文件的只读探索。也欢迎免费/开源替代品,只要它们不意味着使用它们的代码也必须是开源的。

谢谢。

编辑

除了能否继续使用旧版本的 MySql 读取旧的 MySql 数据库文件的问题外,问题仍然是如何读取它们?我的意思是,MySql 不再是我们的数据库,所以即使我可以捆绑旧的 MySql 实现,我是否必须安装完整的数据库引擎才能读取文件?我宁愿避免这种情况。

【问题讨论】:

  • 如果您只想读取数据,这并不难。只是需要阅读一些文档或进行一些逆向工程。哦,忽略 Myi 文件。您只需要数据(在 myd 文件中)和格式(frm 文件)...
  • 这始终是一个选项,但我想保留最后一个选项。
  • 如果项目已经使用了旧版本的 MySQL,您可以在旧的许可方案下使用它们。请参阅Does a License Change for OSS cover all versions, including previous releases? 并咨询律师。
  • 感谢您的信息 - 我会将其传递给相关人员。它仍然不是答案,但绝对值得支持 - 你可以将其重新发布为答案吗?
  • 我们最近经历了类似的事情;我们发现我们能够导出所有数据,然后将en.wikipedia.org/wiki/SQLite 与我们的产品一起使用。这完全取决于复杂性!许多商业闭源产品都使用它。

标签: mysql


【解决方案1】:

如果您想了解表格结构,阅读以下链接就足够了。 MySQL internals (all)File FormatMyISAM

如果还不够,并且您的数据库大小小于 10G,您可以使用 Ms SQL Server Express(数据库小于 10G 时免费。比较不同版本的 Ms SQL Server 的页面是here)。搜索将 MySQL 文件转换为 Ms SQL Server 的方法。这是从 Bing 获得的第一个链接:link1(我想并非所有人都需要 MySQL 服务器)

如果不合适。您可以尝试其他 MySQL 分支,例如:XtraDB、OurDelta、Drizzle、PBX 等。

希望你能找到有用的东西。

【讨论】:

  • 很遗憾,如果没有安装数据库引擎,我找不到读取文件的方法。
【解决方案2】:

我们找到了解决方案。不幸的是,它涉及 MySQL,因此存在潜在的许可问题。这是 - http://dev.mysql.com/doc/refman/5.0/en/libmysqld.html

只需下载 MySql 源代码并帮助自己:

  • libmysqld.dll
  • libmysqld.lib
  • 包含文件夹中的头文件

然后可以使用 libmysqld.dll 中的嵌入式 MySQL 数据库引擎读取文件。

【讨论】:

    猜你喜欢
    • 2012-03-12
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 2020-08-06
    • 2014-08-13
    • 1970-01-01
    相关资源
    最近更新 更多