Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.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转储?_Mysql_Mysqldump - Fatal编程技术网

如何';更新表格,如果表格存在';使用MySQL转储?

如何';更新表格,如果表格存在';使用MySQL转储?,mysql,mysqldump,Mysql,Mysqldump,我目前正在使用mysqldump转储MySQL表 垃圾场目前正在生产: DROP TABLE IF EXISTS `versions`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `versions` ( `major` int(11) NOT NULL DEFAULT '0', `mino

我目前正在使用
mysqldump
转储MySQL表

垃圾场目前正在生产:

DROP TABLE IF EXISTS `versions`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `versions` (
  `major` int(11) NOT NULL DEFAULT '0',
  `minor` int(11) NOT NULL DEFAULT '0',
  `revision` int(11) NOT NULL DEFAULT '0',
  `build` int(11) NOT NULL DEFAULT '0',
  `date_installed` datetime NOT NULL,
  `current` tinyint(4) NOT NULL DEFAULT '0',
  `product_type` varchar(30) DEFAULT NULL,
  `product` varchar(30) DEFAULT NULL,
  `product_class_name` varchar(80) DEFAULT NULL,
  `lazy_load` tinyint(4) NOT NULL DEFAULT '0',
  `sitewide` tinyint(4) NOT NULL DEFAULT '0',
  UNIQUE KEY `versions_pkey` (`product`,`major`,`minor`,`revision`,`build`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
我想让垃圾场说的是

IF TABLE EXISTS, UPDATE IT TO MATCH THIS STRUCTURE (
  `major` int(11) NOT NULL DEFAULT '0',
  `minor` int(11) NOT NULL DEFAULT '0',
  `revision` int(11) NOT NULL DEFAULT '0',
  `build` int(11) NOT NULL DEFAULT '0',
  `date_installed` datetime NOT NULL,
  `current` tinyint(4) NOT NULL DEFAULT '0',
  `product_type` varchar(30) DEFAULT NULL,
  `product` varchar(30) DEFAULT NULL,
  `product_class_name` varchar(80) DEFAULT NULL,
  `lazy_load` tinyint(4) NOT NULL DEFAULT '0',
  `sitewide` tinyint(4) NOT NULL DEFAULT '0',
  UNIQUE KEY `versions_pkey` (`product`,`major`,`minor`,`revision`,`build`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
这可以通过MySQL转储(或者任何其他MySQL相关工具)实现吗


谢谢

您可能需要提前转储架构,并将
创建表
转换为
创建表(如果不存在)

mysqldump -u... -p... --no-data --skip-add-drop-table ... --all-databases | sed 's/CREATE TABLE/CREATE TABLE IF NOT EXISTS/g' > MYSQLSchema.sql
这将绕过添加
删除表(如果存在)命令并将
创建表
转换为
创建表(如果不存在)


试试看

转储数据库时,可以设置/重置生成DROP TABLE命令的标志。

要导出特定的数据库,我使用了
mysqldump-u myusername-pmypassword-跳过添加DROP TABLE-无数据-单事务数据库|名称| sed's/创建表/创建表(如果不存在)/DB.sql