如何从硬盘导出MySQL数据库(数据文件夹)?
我知道,尝试仅通过复制数据文件夹来导出数据库真的很可悲!但我有一个硬盘,里面有一个重要的数据库,我不知道如何将该数据库导出到我的实际系统(winxp - mysql 5.0.37)。
因此,我已将 old_harddisk/program/mysql/data/coge2010 复制到 mypc/programs/mysql/data/coge2010
结果:
- 我在 phpMyAdmin 数据库摘要中看到 cogemilla (4)(这是正确的!我的 4 个表!)
- 如果我单击数据库,我只看到 1 个表(哦不!)
- 在 mysql 错误日志文件中,我发现如下消息:"...[ERROR] 找不到表coge2010/soci来自InnoDB的内部数据字典,尽管该表的.frm文件存在,也许您已经删除并重新创建了InnoDB数据文件,但忘记删除InnoDB表相应的.frm文件,或者您已经移动了.frm。文件到另一个数据库?请参阅http://dev.mysql.com/doc/refman/5.0/en/innodb-troubleshooting.html 如何解决该问题。”
有什么想法吗?
I know, it is really sad trying to export a database just by copying the data folder! But I have a hard disk with an important database inside and I don't know how to export this database onto my actual system (winxp - mysql 5.0.37).
So, i've copied old_harddisk/program/mysql/data/coge2010 to mypc/programs/mysql/data/coge2010
Result:
- I see cogemilla (4) on my phpMyAdmin databases summary (it's correct!!! my 4 tables!)
- If I click the database, I see just 1 table (oh no!)
- On the mysql error log file I find messages like this one: "...[ERROR] Cannot find table coge2010/soci from the internal data dictionary of InnoDB though the .frm file for the table exists. Maybe you have deleted and recreated InnoDB data files but have forgotten to delete the corresponding .frm files of InnoDB tables, or you have moved .frm files to another database? See http://dev.mysql.com/doc/refman/5.0/en/innodb-troubleshooting.html how you can resolve the problem."
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您应该创建一个转储并将其导入到新服务器上。
在命令提示符中键入以下命令来创建转储文件:
要导入数据库:
You should create a dump and import it on the new server.
In Command Prompt type the following to create the dumpfile:
To import the database :
我想分享我的解决方案,
我将硬盘与旧表连接起来。
将 (c:\ProgramData\MySQL{server}) 上的文件 my.ini 中的值更改为
硬盘中的路径(在我的例子中,只需将 c:\ 更改为 d:\ )
重置MySQL服务WINKEY+R ->服务.msc ->单击重新启动。
我的 SQL 服务
进入工作台,通过数据导出功能转储所有表后,所有旧表都在那里。
将my.ini改回本地磁盘,重置Mysql服务路径,将数据导入到正确的表中。
工作起来就像一个魅力。
I want to share my solution,
I connected the hard disk with the old table.
Changed a value inside the file my.ini on (c:\ProgramData\MySQL{server}) from
to the path in the harddisk (in my case just change the c:\ to d:\ )
Reset the MySQL service WINKEY+R -> services.msc -> click restart.
my SQL service
Entered the workbench and all old the table was there, after I dumped all the table via the data export function.
Changed back the my.ini to the local disk reset the Mysql service path and imported the data to the correct table.
Worked like a charm.
您只能在以下情况下复制 InnoDB 表:
1. 您的数据库已停止。
2. 复制所有 InnoDB 文件 (ibdata* ib_logfile* /*.ibd
您可以使用 dump/restore 来复制单个表。
您可以使用 'ALTER TABLE sometable ENGINE=MyISAM' 将其转换为 MyISAM,然后复制 MYI, MYD 和 FRM可以执行单表恢复。
如果您使用 Percona Server,
You can only copy InnoDB tables if:
1. Your database is stopped.
2. You copy all InnoDB files (ibdata* ib_logfile* /*.ibd
You could use dump/restore to copy a single table.
You could user 'ALTER TABLE sometable ENGINE=MyISAM' to convert it to MyISAM and then copy the MYI,MYD and FRM.
Percona XtraBackup can do single table restores if you're using Percona Server.
这篇文章可能会对您有所帮助。
另一篇文章可能会对您有所帮助。
一个mysql表由3个文件(FRM/MYD/MYI)定义。在您的情况下,数据库文件夹中缺少 FRM 文件。
如果您可以运行旧硬盘上的 mysql 服务器,那么转储数据库会更容易。 以下链接向您展示了如何执行此操作
This post may help you.
Another post which may help you.
A mysql table is defined by 3 files (FRM/MYD/MYI). In your case the FRM file is missing into the database folder.
If you can run the mysql server of the old hard disk it is easier to do a dump of your database. The following link shows you how to do this