Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将数据从myisam复制到innodb_Mysql_Database_Innodb_Myisam - Fatal编程技术网

Mysql 将数据从myisam复制到innodb

Mysql 将数据从myisam复制到innodb,mysql,database,innodb,myisam,Mysql,Database,Innodb,Myisam,我目前有一个基于MYISAM存储引擎的数据库,它有几千条记录。我想将我的数据库转换为InnoDb存储引擎 这不是一个简单的ALTER storage engine命令,因为在将其转换为InnoDb之前,我需要将外键添加到当前数据库模式(尽管当前的MyISAM db模式有主键) 我的问题是,一旦我将DB转换为InnoDb,将数据从当前的MYISAM引擎恢复到InnoDb引擎将非常简单,只需启动一个PhpMyAdmin实例并备份数据(减去DB架构或结构),然后将其恢复到InnoDb引擎 这样做的潜在

我目前有一个基于MYISAM存储引擎的数据库,它有几千条记录。我想将我的数据库转换为InnoDb存储引擎

这不是一个简单的ALTER storage engine命令,因为在将其转换为InnoDb之前,我需要将外键添加到当前数据库模式(尽管当前的MyISAM db模式有主键)

我的问题是,一旦我将DB转换为InnoDb,将数据从当前的MYISAM引擎恢复到InnoDb引擎将非常简单,只需启动一个PhpMyAdmin实例并备份数据(减去DB架构或结构),然后将其恢复到InnoDb引擎

这样做的潜在障碍是什么


这是正确的方法吗?还有哪些更简单或更好的方法可以恢复数据

首先添加外键时,必须按特定顺序复制数据,否则由于外键约束,数据将无法添加。 因此,最好的方法是(通过SQL查询)检查是否可以使用当前数据集满足外键约束,然后复制数据,然后定义外键。
但是,如果您使用PHPMyAdmin从InnoDB数据库导出数据,则该顺序已经完成,您可以毫无问题地重新导入该数据。

当您首先添加外键时,必须按特定顺序复制数据,否则由于外键约束,将无法添加数据。 因此,最好的方法是(通过SQL查询)检查是否可以使用当前数据集满足外键约束,然后复制数据,然后定义外键。 但是,如果您使用PHPMyAdmin从InnoDB数据库导出数据,那么订单已经完成,您可以毫无问题地重新导入它

这将不是一个简单的alterstorageengine命令,因为我需要向当前数据库模式添加外键

为什么不呢?确保首先备份数据,这始终是一个好主意,但您不需要转储和恢复数据,您可以发布简单的ALTER TABLE,例如:

ALTER TABLE `tablename` ENGINE = InnoDB;
之后,您可以添加任何索引和外键。如果任何新外键失败,您必须修复数据并重试

这将不是一个简单的alterstorageengine命令,因为我需要向当前数据库模式添加外键

为什么不呢?确保首先备份数据,这始终是一个好主意,但您不需要转储和恢复数据,您可以发布简单的ALTER TABLE,例如:

ALTER TABLE `tablename` ENGINE = InnoDB;

之后,您可以添加任何索引和外键。如果任何新外键出现故障,您必须修复数据并重试。

您可能可以稍后添加外键

  • 更改表格以使用新引擎

  • 更改每个表以使用外键


  • 我只看到一个问题,那就是如果外键一开始就坏了。

    您可能以后再添加外键

  • 更改表格以使用新引擎

  • 更改每个表以使用外键

  • 我只看到一个问题,那就是如果外键一开始就坏了