web-dev-qa-db-ja.com

MySQLエラーコード:MySQL WorkbenchでのUPDATE中の1175

visitedを更新して値1を与えようとしています。MySQLワークベンチを使用し、ワークベンチ内からSQLエディターでステートメントを書いています。私は次のコマンドを書いています:

UPDATE tablename SET columnname=1;

それは私に次のエラーを出します:

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

指示に従い、Editメニューからsafe updateオプション、次にPreferencesそしてSQL Editorのチェックを外しました。それでも同じエラーが表示されます。この値を更新することはできません。何が問題なのか教えてください。

644
Jury A

私は答えを見つけました。問題は、テーブル名の前にスキーマ名を付けなければならないことです。つまり、コマンドは次のようになります。

UPDATE schemaname.tablename SET columnname=1;

皆さんありがとう。

19
Jury A

MySqlセッションに safe-updatesオプション setがあるようです。つまり、where句でキー(例:primary key)を指定せずにレコードを更新または削除することはできません。

試してください:

SET SQL_SAFE_UPDATES = 0;

または、ルールに従うようにクエリを変更することもできます(primary keywhere clauseを使用してください)。

1327
Habibillah

UPDATEコマンドを実行する前に、次の手順に従ってください。 MySQL Workbenchの場合

  1. Edit - > Preferencesに行きます
  2. "SQL Editor"タブをクリックしてuncheck "安全な更新" check box
  3. Query - > Reconnect to Server //ログアウトしてからログインする
  4. 今すぐあなたのSQLクエリを実行します

p.s.、MySQLデーモンを再起動する必要はありません。

393
Ripon Al Wasim
SET SQL_SAFE_UPDATES=0;
UPDATE tablename SET columnname=1;
SET SQL_SAFE_UPDATES=1;
130
user2531028

必要なのは、次のとおりです。新しいクエリを開始して実行します。

SET SQL_SAFE_UPDATES = 0;

それから:あなたが実行しようとしていたクエリを実行してください。

98
Quagmire12

SQL_SAFE_UPDATESを0に設定する必要はありません 、そうすることをお勧めします。 REASONの場合、SAFE_UPDATESはデフォルトでオンになっています。私の言っていることがわかっていれば、安全帯などを使わずに車を運転することができます。

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.

今、あなたはすべての記録があなたが期待する通りに(常に)更新されることを保証されることができます。

67
Rudy De Volder

エラーコード:1175。セーフアップデートモードを使用しており、KEYカラムを使用するWHEREのないテーブルをアップデートしようとしました。セーフモードを無効にするには、Preferences - > SQL Editorのオプションを切り替えて再接続します。

"Safe Update Mode"を一時的にオフにします

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

"Safe Update Mode"を永遠にオフにします

MySQLワークベンチ8.0:

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

enter image description here 古いバージョンはすることができます:

MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]
41
TinhNQ
  1. 設定...
  2. "安全なアップデート" ...
  3. サーバーを再起動

Preferences...

Safe Updates Restart server

40
andrew
SET SQL_SAFE_UPDATES=0;

OR

Edit --> Preferencesに移動します

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

Query --> Reconnect to Server

今すぐあなたのSQLクエリを実行します

33
Balu

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

UPDATE tablename SET columnname=1 where id>0
25
Tomislav

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

8
Ruwantha

質問に答えても安全なアップデートとは何の関係もないので、これは間違った場所かもしれません。情報を追加するためだけに投稿します。

私は善良な市民になろうとし、更新される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);

それはうまくいった。嬉しいことに、安全な更新チェックを回避するためにwhere key <> 0を常に追加したり、SQL_SAFE_UPDATE = 0を設定したりすると、クエリの 'check'が失われます。私はちょうど永久にオプションをオフにするかもしれません。私はそれが1つではなく2つのステップからなるプロセスの削除と更新をすると思います。

5
Gerard ONeill

確かに、これはほとんどの例では無意味です。しかし、最後に、私は次の文に来ました、そしてそれはうまくいきます:

update tablename  set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz');
4
Sonic-Mayhem

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

安全でないDELETE操作を試みたときに発生するエラー

Click on preferences when you get this error

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

Uncheck the safe updates

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

今度はDELETEをもう一度試して、成功する結果になります。

enter image description here

それでは、この安全なアップデートのすべては何ですか?それは悪いことではありません。これが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;

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

2
Krishnadas PC
SET SQL_SAFE_UPDATES = 0;

ここにコードSQL

SET SQL_SAFE_UPDATES = 1;

WorkBenchでは、セーフアップデートモードを無効にすることで解決しました。

-Edit - > Preferences - > Sql EditorそれからSafe updateのチェックを外します。

0