MySQLにてSQLで一括置換をしUpdateをかけようと思ったら、以下のエラーが出ました。
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 Queries and reconnect.
メモとしてこのエラーの原因と対処方法を記載したいと思います。
目次
- 前提条件
- 原因
- 対応方法
- 参考文献
前提条件
- MySQL 5.5.XX
- Windows XP
原因
原因はMySQLの接続するクライアントの設定項目「SQL_SAFE_UPDATES」が1になっている為です。MySQLのリファレンスマニュアルに以下の様な記載があります。
SQL_SAFE_UPDATES = {0 | 1}
もし1に設定すると、MySQL は WHERE 条項か LIMIT 条項内でキーを利用しない UPDATE か DELETE ステートメントを異常終了します。これは、キーが正しく利用されずその為に多数の行を変更、または削除する UPDATE か DELETE ステートメントをキャッチする事を可能にします。デフォルト値は0です。
対応方法
SQLを発行出来る環境から以下のコマンドで対応出来ます。SET SQL_SAFE_UPDATES = 0;
後は以下の様なSQLで一括置換を行えばOKです。
update test set hoge = replace(hoge,'ab','12');