MySQLでError Code: 1175が出た時の対処法

MySQLでError Code: 1175が出た時の対処法 テクノロジー
MySQLでError Code: 1175が出た時の対処法

主に「UPDATE」や「DELETE」の時に遭遇するエラーですが、MySQLで「セーフアップデートモード」が有効になっているために特定の更新クエリが実行できないと時には、Error Code: 1175がでます。

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でError Code: 1175が出た時の対処法をリストアップしていますので、ぜひご参考ください。

方法1:セーフアップデートモードを無効化する

MySQL Workbenchを使用している場合は、Preferences(またはOptions)にあるSQL Editorセクションに移動し、Safe Updates(「セーフアップデートを行う」または類似のオプション)のチェックを外します。

その後、MySQLサーバーに再接続すれば、「UPDATE」や「DELETE」などの更新処理ができるようになります。

方法2:一時的にセーフモードを無効にする

もしMySQL Workbenchの設定を変更したくない場合、以下のSQLコマンドを実行してセーフモードを一時的に無効にすることもできます。

このコマンドを実行した後、更新クエリを再度試してみましょう。

セーフモードを無効にした状態で、必要なSQLクエリやデータの更新を実行した後、以下のコマンドを実行してセーフモードを再び有効にします。

方法1も含め、セーフモードを無効にする方法は、リスクを伴います(だからセーフモードが存在します)。

特に大規模なデータベースの更新を行う場合は、事前にバックアップを取ることをお勧めします。

方法3:KEY列を使用するWHERE句を追加する

もしセーフモードを無効にしたくない場合は、更新する際にKEY列(主キーまたはインデックスが設定されている列)を使用するWHERE句をクエリに追加することで、このエラーを回避することができるとともに、誤って大量の行を更新するリスクを減らすこともできます。

例えば、

このクエリでは、WHERE句がないため、テーブル内の全ての行に影響を及ぼす可能性があります。

また、WHERE句があっても、セーフモードはこのような大規模な影響を防ぐために、エラーを出して操作をブロックします。

エラー1175を回避するためには、KEY列を使用するWHERE句を追加する必要があります。たとえば、特定のemployee_idを持つ従業員の部署を更新するには、以下のようにします。

このクエリでは、employee_idというKEY列を使用して特定の従業員を指定しています。これにより、セーフモードが有効でも特定の行のみが更新されるため、エラーは発生しません。

このように、KEY列を使用した明確なWHERE句を追加することで、セーフモードが有効な状態でも安全にデータを更新することができます。

コメント

タイトルとURLをコピーしました