Mysqldump:备份时为插入创建列名

Mysqldump:备份时为插入创建列名,mysql,mysqldump,database-schema,Mysql,Mysqldump,Database Schema,如何指示mysqldump在insert语句中使用列名进行备份? 在我的例子中,我没有使用insert sql进行正常备份,导致 LOCK TABLES `users` WRITE; /*!40000 ALTER TABLE `users` INSERT INTO `users` VALUES (1 结构 现在我继续,并从用户模式中删除了一列。在此之后,当我运行备份sql时,会出现列号不匹配错误 要解决这个问题,我如何指导mysqldump也写列名? 下面是我现在的做法 mysqldump

如何指示mysqldump在insert语句中使用列名进行备份?
在我的例子中,我没有使用insert sql进行正常备份,导致

LOCK TABLES `users` WRITE;
/*!40000 ALTER TABLE `users` 
INSERT INTO `users` VALUES (1
结构

现在我继续,并从用户模式中删除了一列。在此之后,当我运行备份sql时,会出现列号不匹配错误

要解决这个问题,我如何指导mysqldump也写列名? 下面是我现在的做法

mysqldump --host=${dbserver} --user=${dbusername} --password=${dbpassword} \
          --no-create-db --no-create-info --extended-insert --single-transaction \
          --compress tablename  

在更广泛的层面上,管理这些模式更改的最佳实践是什么

在mysqldump命令参数中使用
--完成插入

明确指定的字段将如何帮助您?删除列后,即使是具有指定字段的查询也将不正确。@zerkms当您仅向表中添加字段时,这将有所帮助。如果已删除字段,则应将其全部删除是否有合理的理由说明这不应成为mysqldump的默认行为?@paradiso我相信这是因为
mysqldump
大量用于备份,它们越小越好。@paradiso还注意到,mysqldump默认情况下会转储结构和数据,从而使列名信息变得无用。如果将值加载到一个表中,该表的结构可能与从中提取数据的表不同,则指定列名非常有用。@paradiso文件越小越好。不包括列名会降低文件大小,这主要取决于数据库的复杂性,但在某些情况下,如我的数据库,这是一种救生措施,我的本地数据库每天都在变化,但不会立即进入live server,因此当我更新live server db时,这对我来说绝对是一种救生措施,否则,我必须跟踪我添加到本地shema中的所有列名,然后使用手动为每个表添加列来添加这些列。但有了这个简单的技巧,我可以省去很多次和头痛。