我正在使用MySQL 5.5.1.1,下载和安装地点:http://dev.mysql.com/downloads/

我想将.frm和.opt数据库文件从本地计算机导入到MySQL数据库.

我创建了一个新的数据库连接来帮助我从我的机器导入文件.但我无法导入.frm文件,因为我不断收到错误消息:格式不受支持.

有人能帮我介绍一下如何将文件导入MySQL客户端吗?

谢谢, J

推荐答案

至于导入任何MySQL数据,需要考虑三(3)件事.

MyISAM

导入MyISAM表很简单,只需将给定表的三个扩展名为.frm.MYD.MYI的文件移到MySQL文件夹中即可.例如,如果表名为mydata,则三(3)个文件

  • mydata.frm
  • mydata.MYD
  • mydata.MYI

以下可能是噩梦中的噩梦.导入InnoDB完全取决于以下两类因素之一:

InnoDB (innodb_file_per_table disabled [default])

所有InnoDB数据和索引页都位于/var/lib/mysql/ibdata1中.必须将此文件从源计算机(Server-S)移动到目标计算机(Server-T),并将其放置在相同的绝对路径中.事实上,令人震惊的是:Server-S和Server-T必须相同.换句话说,您不能将InnoDB .ibd文件导入和导出到其他计算机.它们只能在创建.ibd的同一台计算机上导入和导出.

您还必须将/var/ib/mysql/ib_logfile0和/var/ib/mysql/ib_logfile1从服务器-S移动,并将它们放在服务器-T上相同的绝对路径中.

您还必须确保在Server-S的/etc/my.cnf中设置的每个InnoDB变量都必须设置在Server-T上的/etc/my.cnf中.

InnoDB (innodb_file_per_table enabled)

对于每个InnoDB表,将有两个文件.例如,如果mydata数据库中的InnoDB表名为MyTable,那么您将拥有/var/lib/mysql/mydata/mytable.frm和/var/lib/mysql/mydata/mytable.ibd..ibd文件包含表的数据和索引页.要导入单个表,您必须

  1. mytable.frm放入/var/lib/mysql/mydata folder中,放在Server-T上
  2. mytable.ibd放入/var/lib/mysql/mydata folder中,放在Server-T上
  3. ALTER TABLE mydata.mytable IMPORT TABLESPACE;

确保您将/var/lib/mysql/ibdata1放在导入它的同一位置.

Moral of the story

请不要跨不同的服务器使用IMPORT TABLESPACE技术.只需对所有内容执行mysqldump并导入mysqldump即可.逻辑转储总是最安全的方式!

Database相关问答推荐

Metasploit 数据库警告

Active Record - 获取数据库中的第二个、第三个.. 项(无 ID)

什么是范围锁( range-locks)?

在 Oracle 中查找数据库的大小

将 .frm 和 .opt 文件导入 MySQL

设计用于存储多人游戏的各种要求和统计数据的表格

错误:mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication

无法在 MYSQL 5.5 w/MYSQL Workbench 中更改模式名称

使用存储过程是一种不好的做法吗?

如何使用 PHP 代码将图像上传到 MySQL 数据库

如何更改 MySQL DB 中所有表的前缀?

获取错误函数 to_date(timestamp without time zone, unknown) 不存在

使用多个数据库模式的 JPA

Django 数据库值的最佳推荐方式是什么?

将 .csv 文件导入 Android 中的 Sqlite

如何删除除了postgres中的少数数据库之外的所有数据库

MongoDB 是否支持浮点类型?

将查询限制为一条记录会提高性能吗

以可能的数据丢失为代价提高 PostgreSQL 写入速度?

用于 sql 表中的状态列的类型