mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

MySQL - UPDATE/DELETE 時の Error:1175!

[ pc_tips, サーバ構築 ] [ MySQL ]

こんばんは。

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

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

記録

現象

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

1
DELETE FROM hoge WHERE fuga >= 100;

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

1
2
3
4
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にする)方法もあります。

1
SET SQL_SAFE_UPDATES=0;

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

以上。

Comments