问题描述
- 使用下面命令导出SQL时,发现表结构发生了变化
mysqldump -u ocean_monitor_w -h 10.46.7.143 -P 6245 -p***** bce_ocean_monitor --skip-opt >./machine.sql
- 原有建表语句是这样的:
CREATE TABLE `yunti_expansion_task` (
`task_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`host_list` text NOT NULL COMMENT 'host_list'
PRIMARY KEY (`task_id`)
) ENGINE=InnoDB AUTO_INCREMENT=692 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 COMMENT='yunti_expansion_task';
- 使用mysqldump导出之后的建表语句是这样的:
CREATE TABLE `yunti_expansion_task` (
`task_id` bigint(20) NOT NULL COMMENT 'id',
`host_list` text NOT NULL COMMENT 'host_list',
PRIMARY KEY (`task_id`),
);
- 对比可知,建表语句的区别在于‘id’字段由自增类型变为非自增类型。
原因
请教了公司的DBA,然后自己又进行了实验,终于找到了问题所在。
- mysqldump使用时,我加了‘–skip-opt’选项,改选项的官方解释如下:
–skip-opt:
Disable --opt. Disables --add-drop-table, --add-locks, --create-options, --quick, --extended-insert
- 这个选项直接导致了‘ --create-options’的关闭,该选项的官方解释如下:
-a, --create-options:
Include all MySQL specific create options. (Defaults to on; use --skip-create-options to disable.)
- 我又使用‘–skip-create-options’选项验证了一下,果然是这里的问题,SQL如下:
mysqldump -u ocean_monitor_w -h *.*.*.* -P 6245 -p***** --skip-lock-tables --quick --skip-create-options bce_ocean_monitor --tables yunti_expansion_task >./machine.sql
写在后面
虽然踩了一个坑,但是也算是自己的收获,赶紧记下来,方便后来人更快解决问题,然后自己静待明天背锅。。