https dev mysql com doc




MySQLエラーコード:MySQL WorkbenchのUPDATE中に1175 (10)

  1. 設定...
  2. "安全なアップデート" ...
  3. サーバーを再起動する

私はvisitedしたカラムを更新して値1を与えようとしています。私はMySQLのワークベンチを使用していますが、ワークベンチの内部からSQLエディタにその文を書いています。 私は次のコマンドを書いています:

UPDATE tablename SET columnname=1;

それは私に次のエラーを与える:

安全な更新モードを使用していて、KEY列を使用するWHEREなしでテーブルを更新しようとしました。セーフモードを無効にするには、オプションを切り替えます。

指示に従って、[ Edit ]メニューから[ Preferences SQL Editor Preferencessafe updateオプションのチェックを外しました。 それでも同じエラーが表示され、この値を更新できません。 どうか間違っていると教えてください。


MySQL Workbechバージョン6.2では、Preference SQLQueriesオプションを終了しません。

この場合は、次のように使用できますSET SQL_SAFE_UPDATES=0;


SQL_SAFE_UPDATESを0に設定する必要はありません 。そのようにすることを本当に躊躇します。 WHERE句にKEY値を追加するだけで、プライマリキーが0に比べてすべて一致するので、次のように書くのではなく、

UPDATE customers SET countryCode = 'USA'
    WHERE country = 'USA';               -- which gives the error, you just write:

UPDATE customers SET countryCode = 'USA'
    WHERE (country = 'USA' AND customerNumber <> 0); -- Because customerNumber is a primary key you got no error 1175 any more.

これで、すべてのレコードが期待通りに更新されることが保証されます。


あなたがセーフモードであれば、where句にidを指定する必要があります。 だからこのような何かがうまくいくはずです!

UPDATE tablename SET columnname=1 where id>0

これはMac用ですが、好みの場所以外の他のOSで同じである必要があります。

安全でないDELETE操作を試みたときのエラー

新しいウィンドウで、[ Safe updates ]オプションのチェックを外しSafe updates

次に、接続を閉じて再度開きます。 サービスを再起動する必要はありません。

ここで、 DELETEもう一度やり直して、成功した結果を得ようとしています。

このような安全なアップデートについてはどうですか? それは悪いことではありません。 これは、MySqlがそれについて言うことです。

--safe-updatesオプションの使用

初心者のために、便利な起動オプションは--safe-updates (または--i-am-a-dummy 、同じ効果があります)です。 DELETE FROM tbl_nameステートメントを発行したがWHERE句を忘れた場合に役立ちます。 通常、このような文はテーブルからすべての行を削除します。 --safe-updatesを使用すると、それらを識別するキー値を指定するだけで行を削除できます。 これは、事故を防ぐのに役立ちます。

--safe-updatesオプションを使用すると、mysqlはMySQLサーバーに接続するときに次の文を発行します。

SET sql_safe_updates=1, sql_select_limit=1000, sql_max_join_size=1000000;

本番データベースを扱う間は、このオプションをオンにしても安全です。 それ以外の場合は、誤って重要なデータを削除しないように注意する必要があります。


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

「セーフアップデートモード」を一時的にオフにする

SET SQL_SAFE_UPDATES = 0;
UPDATE options SET title= 'kiemvieclam24h' WHERE url = 'http://kiemvieclam24h.net';
SET SQL_SAFE_UPDATES = 1;

「セーフアップデートモード」を永久にオフにする

Mysqlワークベンチ8.0:

MySQL Workbench => [ Edit ] => [ Preferences ] -> [ SQL Editor ] -> Uncheck "Safe Updates"

古いバージョンは:

MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]

必要なのは次のとおりです。新しいクエリを起動して実行する:

SET SQL_SAFE_UPDATES = 0;

次に、以前に動作していなかった実行しようとしていたクエリを実行します。


最も簡単な解決策は、行制限を定義して実行することです。 これは安全のために行われます。


質問は答えられ、安全な更新とは関係がないので、これは間違った場所かもしれません。 私はちょうど情報を追加するために投稿します。

私は良い市民になろうとしましたが、更新されるIDの一時テーブルを使用するようにクエリを修正しました:

create temporary table ids ( id int )
    select id from prime_table where condition = true;
update prime_table set field1 = '' where id in (select id from ids);

失敗。 更新を次のように変更しました。

update prime_table set field 1 = '' where id <> 0 and id in (select id from ids);

それはうまくいった。 まあ、ゴリ - 私はいつも安全な更新チェックを回避するためにキー<> 0を追加している、またはSQL_SAFE_UPDATE = 0を設定しても、私はクエリで 'チェック'を失いました。 私はちょうど永久にオプションをオフにするかもしれません。 私はそれが1つではなく2つのステップのプロセスを削除して更新すると思います。しかし、あなたが速くタイプし、キーが特別なものではなくむしろ迷惑であると考えるのを止めれば。


SET SQL_SAFE_UPDATES=0;

または

Edit --> Preferences

[ SQL Queries ]タブをクリックし、[ Safe Updates ]チェックボックスをオフにします。

Query --> Reconnect to Server

SQLクエリを実行する







mysql-workbench