MySQL の Safe Updates モードを無効化する方法

ここでは MySQL の Safe Updates モードとは何かと、Safe Updates モードを無効化する方法をご説明します。

MySQL の Safe Updates モードとは?

MySQL の Safe Updates モードが ON の時は、UPDATE 文と DELETE 文で WHERE 句をつけなかったり、WHERE 句でキーカラムを使って条件文を指定しなかった時にエラーになるモードです。


例えば、MySQL Workbench で exam_results テーブルの score < 70 のレコードを削除する DELETE 文を実行すると次のようなエラーになります。

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.

MySQL の Safe Updates モードを無効化する方法 1


間違って大量のデータを更新・削除してしまうのを防ぐ機能で、Safe Updates モードのデフォルトは ON になっています。


MySQL の 現在の Safe Updates モードの ON/OFF を確認する

MySQL の 現在の Safe Updates モードの ON/OFF を確認するには、MySQL サーバのシステム変数一覧を表示する SHOW VARIABLES ステートメントで確認できます。

LIKE 句に 'sql_safe_updates' を指定します。

SHOW VARIABLES LIKE 'sql_safe_updates';

MySQL の Safe Updates モードを無効化する方法 2

現在の Safe Updates モード は ON になっています。


MySQL で Safe Updates モードをクエリーで一時的に無効化する

間違ってデータを更新・削除してしまうのを防いでくれるのはありがたいですが、WHERE 句にキー以外のカラムを指定してデータを更新・削除したい時もあると思います。

そんな時はクエリーで Safe Updates モードを無効化することができます。


Safe Updates モードを無効化するクエリーは次の通りです。

SET sql_safe_updates = 0;

上のクエリーを実行して、現在の Safe Updates モードの ON/OFF を確認し、もう一度 DELETE 文を実行してみます。

MySQL の Safe Updates モードを無効化する方法 3

Safe Updates モードが OFF になり、exam_results テーブルの score < 70 のレコードを削除する DELETE 文を実行が成功しました。


Safe Updates モードを有効化に戻したい時は sql_safe_updates を 1 にします。

SET sql_safe_updates = 1;

この設定は同じコネクションの間は有効ですが、一度 MySQL Workbench を閉じて接続しなおすとまた sql_safe_updates は ON に戻ります。


MySQL Workbench で Safe Updates モードをずっと無効にする

先ほどのクエリーで Safe Updates モードを OFF にする方法は一時的なものでした。

MySQL Workbench の設定画面を使うと、Safe Updates モードをずっと無効のままにしておくことができます。


メニューから Mac では [MySQL Workbench] > [Preferences...] を選択します。

Windows では [Edit] メニューにあります。

MySQL の Safe Updates モードを無効化する方法 4


Workbench Preferences 画面が開くので、左側で SQL Editor を選択し、一番したの 「Safe Updates (rejects UPDATEs and DELETEs with no restrictions)」のチェックボックスを OFF にして OK ボタンをクリックします。

MySQL の Safe Updates モードを無効化する方法 5


この状態ではまだ Safe Updates モード は ON のままで、MySQL Workbench を一度閉じて接続しなおすと Safe Updates モード が OFF になります。

この Safe Updates モードの設定はずっと有効です。


以上、MySQL の Safe Updates モードとは何かと、Safe Updates モードを無効化する方法をご説明しました。

© 2024 MySQL 入門