【MySQL】WorkbenchでUPDATEが実行されないときの対応備忘録
こんにちは、ま。です
MySQLのGUIツールとして配布されているMySQL Workbench。
私も利用していますが、Update文を実行する際に、SQLは正しいのに実行できない事象に巡り合うことが多々あります。
エラーを見るたびに理由は思い出しますが、対応するための構文をいつも調べなおすので今回も備忘録にしてみます!
SAFE UPDATE対応クエリ
さらっと対応方法を。
解除クエリ
SET sql_safe_updates = 0;
セッション切れれば元に戻るから使わないけど有効化するクエリ
SET sql_safe_updates = 1;
ほぼ使わないけど確認クエリ
SHOW VARIABLES LIKE 'sql_safe_updates';
SAFE UPDATEとは
簡単に言えば、「キー指定しろ」って話です。
MySQL Workbenchで構築するとデフォルト状態で、Update文やDelete文を実行する際に、Where句でキーカラムの条件を指定しないと例えSQLの構文そのものが正しくても実行されないようになっています。
もちろん意図しない更新を防ぐためでしょうね。
その機能?モード?のことを Safe Update Mode と言うようです。
これがONの状態の時に一括更新をするようなSQLを実行しようとすると以下のようなエラーが出ます。
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 Editor and reconnect.
開発しているとカラムを追加したりした際に、一括更新したい場合はあると思います。
Update文書いて実行してみてこのエラー見るまで、SafeUpdateのことなんか忘れますよね(笑)
ということで先にも書きましたが、このSQLで一時的にモードを解除してあげることができます。
SET sql_safe_updates = 0;
そのセッション内でしか有効にならないので、戻し忘れても勝手に戻ります。
とはいえ、0か1かの違いですし、セッション内でも別作業でミスしないためにすぐ戻しておくのも大事かなって思いはしてます。思いは。
そんなミスしないから一生外しておいてほしいという方は、
Workbenchの設定から、SQLエディターの項目内にsafu updateのチェックボックスがありますので設定してみてください。
おわりに
以前にもSQLの基本的+コアな使い方の記事を書きましたのでこちらもぜひ読んでみてください!
【MySQL】SQLの基本構文と稀に使うサンプル ~重複削除・Indexなど~
内容とは関係ないのですが、毎回調べるな~と思うことはブラウザのブックマークにフォルダーを作って入れています。
本記事のような備忘録や、コマンド一覧のようなサイトを入れとくと、未来の自分に役立つ機会がよく来るのでお勧めですので是非!
今回もありがとうございました!