Застрял в цикле при выполнении mysqldump - PullRequest
0 голосов
/ 16 декабря 2018

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

...