MySQLエラー:エラー1175:安全な更新モードを使用しています



Mysql Error Error 1175



問題の説明: MySQLデータベースを操作し、テーブル内のデータの行を削除します。

mysql> delete from user where name='caicai'

次のエラーを表示します。



エラーコード:1175。セーフアップデートモードを使用していて、KEY列を使用するWHEREなしでテーブルを更新しようとしました。セーフモードを無効にするには、[設定]-> [SQLエディター]のオプションを切り替えて再接続します。

エラーメッセージ: セキュリティ更新モードを使用して、テーブルを更新しようとしても、キー列のwhere条件は使用されません。



理由は次のとおりです。mysqlにはSQL_SAFE_UPDATESという変数があります。データベース更新操作のセキュリティのために、この値はデフォルトで1またはONになっているため、更新は失敗します。

mysql> select * from user +----+--------+ | id | name | +----+--------+ | 1 | caicai | | 2 | wade | | 3 | TigerwoifC | | 4 | chen | | 5 | tang | +----+--------+ mysql> delete from user where name='caicai' 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> show variables like 'sql_safe%' +------------------+-------+ | Variable_name | Value | +------------------+-------+ | sql_safe_updates | ON | +------------------+-------+

以下は、SQL_SAFE_UPDATES変数が0および1の場合の値の説明です。



SQL_SAFE_UPDATESには2つの値0と1、またはONとOFFがあります

SQL_SAFE_UPDATES = 1、ONの場合、where条件とlimit条件があり、キー列の更新と削除がない場合でも、where条件とlimit条件のない更新および削除操作ステートメントは実行できません。

SQL_SAFE_UPDATES = 0の場合、OFFの場合、更新および削除操作がスムーズに実行されます。したがって、明らかに、この変数のデフォルト値は1です。

したがって、1175エラーが発生した場合は、最初にSQL_SAFE_UPDATESの値を0 OFFに設定してから、更新を実行できます。

次の2つのコマンドで構成を変更できます

mysql> sql_safe_updates = 0を設定します

mysql> set sql_safe_updates = off

変更後、もう一度テストします。

mysql> show variables like 'sql_safe%' +------------------+-------+ | Variable_name | Value | +------------------+-------+ | sql_safe_updates | OFF | +------------------+-------+ mysql> delete from user where name='caicai' Query OK, 1 row affected (0.00 sec)

変更は現時点でのみ有効であり、mysqlを終了し、再度ログインした後にデフォルトに戻ります。