MySQL - UPDATE/DELETE 時の Error:1175!

にほんブログ村 IT技術ブログ 自宅サーバー構築へ 人気ブログランキング・投票お願い! BlogPeople・投票お願い! ブログ王・投票お願い!


こんばんは。

MySQL を GUI で管理・操作できるツール MySQL Workbench でのエラーについての対処メモです。
※MySQL 自体の設定の問題なので、MySQL Workbench に限った話でもありませんが。

MySQL Workbench 上で UPDATE や DELETE の SQL 文を実行する際に、エラーとなる場合があります。

記録

現象

次のような SQL 文を実行。
※実行環境:WindowsXP(SP3) + MySQL 5.5.20 + MySQL Workbench 5.2.37

DELETE FROM hoge WHERE fuga >= 100;

出力されるエラーは以下のとおり。

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 -> Query Editor and reconnect.

原因

主キーを使用せずに UPDATE や DELETE を実行するのは危険なので、標準では使用できないような設定になっているからです。
※古いバージョンの MySQL をインストールしている Linux サーバでは、このような現象になった記憶がありません。標準で、主キーを使用せずに UPDATE や DELETE を実行できる設定になっているようです。

対処

MySQL Workbench 上での GUI 的な対処方法です。
(エラーメッセージに出力されている方法そのままです。)
1.メニューから「Edit」-「Preferences」を選択して画面を開く。
MYSQL_WB_1175_1
2.「SQL Editor」タブを開き、「Query Editor」の “Safe Updates”, Forbid UPDATEs …. という項目のチェックを外す。
MYSQL_WB_1175_2
3.MySQL Workbench を再起動する。

その他

以下のような SQL 文を実行して、直接 VARIABLES の値を変更する(OFFにする)方法もあります。

SET SQL_SAFE_UPDATES=0;

SQL_SAFE_UPDATES が 1 (ON) になっていれば、今回のような 1175 エラーは発生しませんが、MySQL を再インストールしたりした場合には、対処が必要です。
もちろん、きちんと主キーで指定して UPDATE, DELETE するなら、SQL_SAFE_UPDATES を 0 (OFF) にする必要はありません。

以上。


 

コメント

コメントをお寄せください。

※初めてコメントされる場合、投稿されたコメントの公開は管理者の承認後になりますので反映までタイムラグがあります。
 ご了承ください。

コメントの投稿

* コメントフィード

トラックバック

下のURLをクリックすると全選択されます。右クリックでコピーしてください。

トラックバックURL