У меня есть база данных (не мной) с ~ 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 images» во внутренний запрос и добавил опцию таблицы блокировки в опцию mysqldump
.Но я все еще хотел бы знать причину неопределенного цикла, вызванного первой командой.