web-dev-qa-db-ja.com

更新クエリがmysqlワークベンチで機能しない

以下に示すMySqlクエリがあります。

UPDATE signup SET lastname='Lastname', password='123'
WHERE firstname='Firstname';

MySqlWorkbenchを使用してクエリを実行しています。

ただし、行は更新されておらず、次のエラーが表示されます。

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

5
Jack Ferzi

Mysqlワークベンチでは、セーフモードがデフォルトで有効になっているため、WHERE句にキーがない場合、クエリの実行が妨げられます。これらの手順を使用して無効にしてみてください-

Edit> Preferences> Sql Editor> uncheck the "Safe Updates"

-サーバーを再接続してみてください(Query> Reconnect to Server)そしてクエリを再実行します。

14
Manoj Salvi

MySQLは、1回のショットで複数の行を更新/削除することを特に回避するのに役立ちます。これを実現するために、IDパラメーターを渡さずにUPDATEクエリを実行することはできません。これはSAFE UPDATESモードと呼ばれます。

@ManojSalviが言ったように、設定から永続的に設定できます。

上記のSAFE UPDATEモードを一時的に無効にしたい場合は、次のことを試すことができます。-

SET SQL_SAFE_UPDATES = 0;
UPDATE signup SET lastname='Lastname', password='123'
WHERE firstname='Firstname';
SET SQL_SAFE_UPDATES = 1;
3
Sarath Chandra

MySQLワークベンチでは「セーフモード」がデフォルトでオンになっています。変更できます。左上のmysqlworkbench–>設定–> sqlエディター–>セーフモードのチェックを外してから、再接続してみてください。または、入力するだけです

SET SQL_SAFE_UPDATES = 0;

これは同じことをします。

1

[編集] @ManojSalviはそれを手に入れました、ワークベンチ関連

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


私のためにうまく働きます...

SQLフィドル

MySQL 5.6スキーマセットアップ

CREATE TABLE t
    (`firstname` varchar(6), `lastname` varchar(14), `password` varchar(3))
;

INSERT INTO t
    (`firstname`, `lastname`, `password`)
VALUES
    ('Pramod', 'Alfred', '***'),
    ('test', 'hello h.', '***')
;
UPDATE t SET lastname='Alfred Schmidt', password='123' WHERE firstname='Pramod';

クエリ1

select * from t

結果

| firstname |       lastname | password |
|-----------|----------------|----------|
|    Pramod | Alfred Schmidt |      123 |
|      test |       hello h. |      *** |
0
Blag