今回は「MySQL Workbenchでセーフモードを解除する方法」について、わかりやすく解説していきます!
MySQL Workbenchを使っていて、「セーフモードなのでUPDATEやDELETEができない!」と困った経験はありませんか?
これは初心者だけでなく、ベテランでもちょっと戸惑う設定です。
でも安心してください。セーフモードは設定で簡単に解除できます。
セーフモードって何?
まずは用語の確認から。
セーフモードとは?
WHERE句なしでのDELETEやUPDATEをブロックする安全機能です。
たとえば、次のようなSQLを間違って実行してしまったとき:
DELETE FROM users;
これ、全件削除してしまいますよね?
セーフモードが有効だと、こういった危険な操作を防止してくれるのです。
どんなエラーが出る?
セーフモードでブロックされると、こんなメッセージが表示されます。
セーフモードを解除する2つの方法
方法①:セッション単位で一時的に無効化する(推奨)
一時的にセーフモードをOFFにしたいだけなら、この方法が便利です。
SET SQL_SAFE_UPDATES = 0;
これをクエリとして実行すれば、そのセッション(接続)中だけセーフモードが無効になります。
そしてUPDATEやDELETEのSQLを実行したあと、安全のために戻すこともできます。
SET SQL_SAFE_UPDATES = 1;
この方法のメリット:
- 一時的なので事故が少ない
- 環境全体に影響を与えない
方法②:Workbenchの設定を変更して常に無効化する
毎回セーフモードを無効にするのが面倒だ!という方は、WorkBenchの設定で恒久的にOFFにできます。
手順
- MySQL Workbench を開く
- 上部メニューから「Edit(編集)」→「Preferences(設定)」を選択
- 左メニューから「SQL Editor」を選択
- 「Safe Updates(セーフアップデート)」のチェックを外す
- 「OK」で設定を保存
- 接続を再起動して反映させる
これで、次回以降の操作でもセーフモードの制限を受けずに済みます。
どちらの方法がいいの?
方法 | 向いている人 | 備考 |
---|---|---|
一時的に無効化(SET文) | 慎重派・事故を防ぎたい人 | 本番環境では特におすすめ |
設定から無効化 | 毎回操作するのが面倒な人 | 開発環境やローカル限定で使うのが安心 |
まとめ
- セーフモードはWHEREなしDELETE/UPDATEを防止する安全機能
- 一時的に無効化するには
SET SQL_SAFE_UPDATES = 0
を使う - 恒久的にOFFにしたいときは Workbenchの設定画面からSafe Updatesを外す
- 本番では基本的にONのままにして、必要なときだけ一時的にOFFにするのがベスト!
今後の学習の指針
DELETE
やUPDATE
は WHERE句の重要性を理解することが第一- セーフモードは「事故防止策」として実践的な仕組みなので、安全設計の基本として捉えてください
- MySQLの設定やセッションの理解を深めて、「なぜそう動くか」も合わせて学びましょう
次は BEGIN
, ROLLBACK
, COMMIT
を使ったトランザクション制御もチェックしてみてくださいね!
何か他に気になる機能があれば、またいつでも聞いてください!