我有一个约有140000张图像的数据库(不是我本人),并且只保存了一些(约3500张左右)。我正在尝试使用mysqldump来执行此操作,但是我似乎以某种方式陷入了循环。即使执行此过程要保存约10张以上的图像,sql转储文件的大小也会无限期增长。
这里是数据库表之一,名为images。
CREATE TABLE `images` (
`imageID` INT(11) NOT NULL AUTO_INCREMENT,
`runID_fk` INT(11) NULL DEFAULT NULL,
`sequenceID_fk` INT(11) NULL DEFAULT NULL,
`cameraID_fk` INT(11) NULL DEFAULT NULL,
`data` LONGBLOB NULL,
`timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`name` TEXT NULL,
`type` TEXT NULL,
`pcadata` LONGBLOB NULL,
PRIMARY KEY (`imageID`)
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
如果将type
设置为perm
,则将保存图像。这是我的mysqldump命令:
mysqldump -u root --verbose -p (database name) images --where="imageID IN (SELECT imageID WHERE type='perm' AND imageID BETWEEN (some number) and (some number))">\location\backup.sql
此命令可能有什么问题?
编辑:如果我将命令更新为
mysqldump -u root --single-transaction=true --verbose -p (database name) images --where="imageID IN (SELECT imageID FROM images WHERE type='perm' AND imageID BETWEEN (some number) and (some number))">\location\backup.sql
然后一切似乎都很好。我基本上在内部查询中添加了“ FROM图像”,并在mysqldump
选项中添加了锁表选项。但是我仍然想知道由第一个命令引起的不确定循环的原因。