最近我的Windows机器出现问题,我只能登录到安全模式。因此,我无法运行Apache或MySQL。我唯一能做的就是备份MySQL数据目录。
在机器上重新安装Windows之后,我想尝试另一种(更好的)开发环境,我偶然发现了Vagrant。我设法使用VirtualBox设置并安装了Ubuntu。
在数据目录的备份中,我有:
auto.cnf
,ib_logfile0
,ib_logfile1
,ibdata1
我拥有的数据库包含MyISAM
和InnoDB
个数据库的组合。
现在我想做的是将数据库恢复到MySQL。我对Unix命令不太熟悉,所以我使用FileZilla来连接到VM。然后我在Ubuntu中找到了数据目录的位置,即/var/lib/mysql
。
首先,我必须更改此目录的权限,以便我可以将文件传输给它。
我停止了mysql服务,然后复制了其中一个文件夹。然后我重新启动了mysql。这样做后我打开了phpmyadmin。我复制了我复制过的数据库,但是当我点击它时只显示了一个表(应该是4)。点击此表浏览数据会给我一个错误#1033 - incorrect information in file 'product.frm'
。
另外我注意到左侧列中列出了其他3个表,但点击这些表给了我一个错误#1146 - Table 'category' doesn't exist
。
我也试过复制ib
个文件,但是这样做之后mysql服务就无法启动了。
有谁知道问题是什么?这与文件来自Windows的事实有什么关系?或者我不正确地进行这个过程?
答案 0 :(得分:1)
我不相信MySQL数据目录可以跨不同的操作系统移植(即,MySQL根本不能处理文件系统区分大小写的变化,以及其他问题)。您最好的选择是在Windows中恢复数据目录(“物理”转储),并使用mysqldump
获取一组SQL命令(“逻辑”转储)。然后,您可以使用PHPMyAdmin的导入功能或使用shell命令导入此文件。