以下に示すMySqlクエリがあります。
UPDATE signup SET lastname='Lastname', password='123'
WHERE firstname='Firstname';
MySqlWorkbenchを使用してクエリを実行しています。
ただし、行は更新されておらず、次のエラーが表示されます。
セーフアップデートモードを使用していて、KEY列を使用するWHEREなしでテーブルを更新しようとしました。セーフモードを無効にするには、[設定]-> [SQLエディター]のオプションを切り替えて、再接続します。
Mysqlワークベンチでは、セーフモードがデフォルトで有効になっているため、WHERE
句にキーがない場合、クエリの実行が妨げられます。これらの手順を使用して無効にしてみてください-
Edit
> Preferences
> Sql Editor
> uncheck the "Safe Updates"
注-サーバーを再接続してみてください(Query
> Reconnect to Server
)そしてクエリを再実行します。
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;
MySQLワークベンチでは「セーフモード」がデフォルトでオンになっています。変更できます。左上のmysqlworkbench–>設定–> sqlエディター–>セーフモードのチェックを外してから、再接続してみてください。または、入力するだけです
SET SQL_SAFE_UPDATES = 0;
これは同じことをします。
[編集] @ManojSalviはそれを手に入れました、ワークベンチ関連
MySQLエラーコード:MySQL WorkbenchでのUPDATE中の1175
私のためにうまく働きます...
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. | *** |