Я просматриваю/редизайн/рефакторинг базы данных и хочу создать новую базу данных, которая будет хранить в значительной степени одни и те же данные умным способом. Одна из проблем в базе данных «legacy» заключается в том, что она не использует правильное использование ключей и индексов, поэтому есть дубликаты записей, где их не должно быть.MySQL: DECLARE CONTINUE HANDLER продолжить ошибки, распечатать предупреждение
Я написал сценарий python, который считывает данные из старой базы данных и генерирует SQL-скрипт, который, в свою очередь, вставляет эти значения из старой базы данных в новую базу данных, используя множество очень похожих операторов SQL INSERT. SQL скрипт останавливается каждый раз, когда он встречает повторяющиеся записи с сообщением об ошибке
ERROR 1062 (23000) at line 3086: Duplicate entry '56.450000000--3.366670000-121' for key 'lat_lon_height'
который AFAICT это именно то, что он должен делать. Однако на данный момент я просто хочу, чтобы скрипт продолжал идти, а не вставлял повторяющиеся записи, но печатал предупреждение о них. Я попытался установить продолжение, обработчик в начале сценария несколько способов следующего the MySQL docs и some other online resources, но все они просто создать синтаксическую ошибку:
DECLARE CONTINUE HANDLER FOR 1062
SELECT 'Duplicate key in unique index';
или
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000'
SELECT 'Duplicate key in unique index';
или
DECLARE CONTINUE HANDLER FOR SQLSTATE '23000'
BEGIN
SELECT 'Duplicate key in unique index';
END;
Что я делаю неправильно?
, который действительно работает, спасибо за этот намек! :-) взял меня немного, чтобы найти что-то на самом деле в хранимой процедуре, не просто хотел поместить все 78000 вставных инструкций там ... в связи с синтаксической ошибкой, я могу только опасаться дикой догадки У меня что-то есть с разделителем не так, и в первый раз я делаю это. – ssc