素敵なサムシングを独断と偏見で一方的に紹介するブログ(´・ω・`)

IT

投稿日: 2020年1月7日
最終更新日:

【Workbench】MySQLでUPDATEとDELETEが実行時エラーになる原因と解決方法【Error Code: 1175】

ねこじゃすり

created by Rinker
PEPPY(ペピイ)
¥3,850 (2024/04/03 21:33:13時点 Amazon調べ-詳細)

猫を魅了する魔法の装備品!

【最新機種】GoPro hero11 Black

created by Rinker
GoPro(ゴープロ)
¥62,000 (2024/04/03 21:42:08時点 Amazon調べ-詳細)

最新機種でVlogの思い出を撮影しよう!

ペヤング ソースやきそば 120g×18個

created by Rinker
ペヤング
¥2,600 (2024/04/03 21:42:16時点 Amazon調べ-詳細)

とりあえず保存食として買っておけば間違いなし!

Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK

created by Rinker
Bauhutte(バウヒュッテ)
¥14,935 (2024/04/03 21:42:10時点 Amazon調べ-詳細)

メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!

BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール

created by Rinker
BANDAI SPIRITS(バンダイ スピリッツ)
¥7,500 (2024/04/03 21:42:14時点 Amazon調べ-詳細)

もう一人の僕を呼び覚ませ!!

MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド

created by Rinker
MOFT
¥2,880 (2024/04/03 21:42:18時点 Amazon調べ-詳細)

Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!

サンディスク microSD 128GB

スマホからSwitchまで使える大容量MicroSDカード!

スポンサーリンク

336×280




MySQLWorkbenchでDELETE/UPDATEが実行出来ない

You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

MySQLWorkbenchなどを使ってテーブルデータの操作をしている際に、DELETE/UPDATEで一気に対象テーブルのデータを変更しようとすると、以下のようなエラーが発生する事があります。

原因

これは、Workbench上で誤って全てのデータを更新する事が無いようにサーバー接続時に自動で--safe-updatesの制約をつけている事が原因となります。

--safe-updatesを使用すると、行を特定するキー値を指定しないと行を消去出来ないため、GUI上での一括操作ミスを防ぐ事が可能になります。

試しに、where句を指定すれば問題なくupdateが可能になります。

解決方法

一時対応

一時的にSQLを実行したいのであれば、DELETE/UPDATEの前にSET SQL_SAFE_UPDATES = 0;を実行して、--safe-updates無効にすればWHERE句無しのDELETE/UPDATEが可能になります。

ただ、この設定は一度サーバーから接続を切ってサイド接続すると効果が無くなるので接続のたびに指定する必要があるので注意です。

現在の設定を確認する方法

この値が現在どうなっているか確認したい場合には、以下のコマンドを投げる事で確認する事が可能です。

恒久対応

毎回接続のたびにSETコマンドを流すのが大変だという方のために、恒久的な対処方法もご紹介しようと思います。

まずはMySQLWorkbench>Preferencesに移動します。

設定ダイアログが表示されたら、SQL EditorOtherエリアのSafe Updates(rejects UPDATEs and DELETEs with no restrictions)にチェックが入っていたら、このチェックを外します

この設定を保存し、再度サーバーに繋ぎ直す事で--safe-updatesが無効になった状態で操作が可能になっているので、WHERE句無しのDELETE/UPDATEが可能になります。

注意

この設定はWorkbench全体の共通設定となっているため、例えばローカルDBと開発DB、本番DBなどにWorkbenchから接続を行ってデータ確認等をしている場合、各DBに対してもWHERE句無しのUPDATE/DELETE文が可能になってしまうので、データ紛失に繋がる恐れがあります。

可能であれば、この設定は残したままにしておいて、必要なタイミングでのみSET SQL_SAFE_UPDATES = 0;を実行するようにした方が運用ミスを避けれるので必要に応じて使い分けてください。

終わりに

以上のように、運用ミスを防いでくれる便利な機能ですが、OFFにする事も可能です。

用途に合わせて、設定を切り替えてみてください。

336×280




336×280




CATEGORIES & TAGS

IT, , , , , , , , ,

blogenist

Author: blogenist

関連記事

YouTubeも見てね♪

お名前.comサイドバー