Продолжайте SQL-запрос даже при ошибках в рабочей среде MySQL

Я использую MySQL Workbench для импорта файла Joomla sample_data.sql в свою локальную базу данных. Я хочу, чтобы он продолжал импортировать, даже если произошла ошибка, пропустив строку, вызвавшую ошибку.

Есть ли что-то, что я могу добавить к SQL, чтобы запрос не останавливался при каких-либо ошибках?


person Steve    schedule 20.03.2011    source источник


Ответы (3)


пытаться

mysql --force < sample_data.sql 

Раздел справки Mysql говорит

 -f, --force         Continue even if we get an sql error.
person Zimbabao    schedule 20.03.2011

Вы также можете использовать INSERT IGNORE

INSERT IGNORE INTO mytable
 (primaryKey, field1, field2)
VALUES
 ('1', 1, 2),
 ('1', 3, 4), //will not be inserted
 ('2', 5, 6); //will be inserted
person Lukas Ignatavičius    schedule 17.04.2014
comment
Это может иметь другие последующие последствия в зависимости от варианта использования, такие как вставка неявных значений по умолчанию в столбцы. Если строгий режим не действует, MySQL вставляет скорректированные значения для недопустимых или отсутствующих значений и выдает предупреждения (см. Раздел 13.7.5.41, «Синтаксис SHOW WARNINGS»). В строгом режиме вы можете создать такое поведение, используя INSERT IGNORE или UPDATE IGNORE. См. dev.mysql.com/doc /refman/5.6/en/sql-mode.html#sql-mode-strict - person CGritton; 12.11.2018

В MySQL Workbench я снял флажок «Остановить выполнение сценария при ошибках» в разделе «Запрос»:

введите здесь описание изображения

Похоже, ответ Зимбабао тоже сработает.


В более новых версиях используйте «Переключить, должно ли выполнение сценария SQL продолжаться после неудачных операторов».

Включить или отключить выполнение сценария SQL после неудачных операторов

person Steve    schedule 20.03.2011
comment
Спасибо за совет! Сэкономил много времени. - person André Luiz Müller; 10.03.2013
comment
Хотя этот ответ определенно правильный и очень полезный, я обнаружил, что он работает не совсем идеально. Используя Workbench v6.3 против старого сервера MySQL v5.1 и вызывая ряд хранимых процедур, когда одна из этих процедур обнаруживает ошибку, выполнение останавливается независимо от этого параметра в Workbench! Я не изолировал, какой из этих факторов может иметь значение. Просто сообщаю о дыре, которую я нашел здесь, на случай, если эта информация может быть полезна другим. - person BuvinJ; 06.07.2021