Обновление поля в базе данных A с полем из базы данных B и предупреждение о безопасном обновлении

Я хочу обновить поле xfade в samdb.songlist со значениями из xfade в другой базе данных (на том же хосте), samdbtmp.songlisttmp, Пока есть текст APPLE в filename поле.

Вот моя попытка...

UPDATE samdb.songlist
SET 
    samdb.songlist.xfade = (SELECT 
            samdbtmp.songlisttmp.xfade
        FROM
            samdbtmp.songlisttmp
        WHERE
            samdbtmp.songlisttmp.ID = samdb.songlist.ID)
WHERE filename LIKE '%201411.mp3';

Я хотел бы сделать это, не снимая безопасные обновления в Workbench, и я подумал, добавив WHERE с ключевым полем IDЯ должен быть в состоянии сделать это. Но я получаю ошибку...

Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.

Вопрос... мой MySQL правильный? И как мне избежать ошибки?

1 ответ

Решение

На самом деле не столько ответ, сколько обходной путь. Я пошел с ниже...

SET SQL_SAFE_UPDATES=0;
UPDATE samdb.songlist
SET 
    samdb.songlist.xfade = (SELECT 
            samdbtmp.songlisttmp.xfade
        FROM
            samdbtmp.songlisttmp
        WHERE
            samdbtmp.songlisttmp.ID = samdb.songlist.ID)
WHERE filename LIKE '%201411.mp3';
SET SQL_SAFE_UPDATES=1;

Я был рад отключить безопасные обновления для этого запроса, но не навсегда.

Другие вопросы по тегам