我有一个MySql查询,如下所示:
UPDATE signup SET lastname='Lastname', password='123'
WHERE firstname='Firstname';
我正在使用MySql Workbench来执行查询。
但它没有更新行并显示此错误:
您正在使用安全更新模式,并且您尝试更新表格 使用KEY列的WHERE要禁用安全模式,请切换选项 在首选项 - > SQL编辑器并重新连接。
答案 0 :(得分:14)
在mysql工作台中,默认情况下启用安全模式,因此如果您的WHERE
子句没有密钥,则会阻止运行查询。尝试使用这些步骤禁用它 -
Edit
> Preferences
> Sql Editor
> uncheck the "Safe Updates"
注意 - 尝试重新连接服务器(Query
> Reconnect to Server
),然后重新运行查询。
答案 1 :(得分:3)
MySQL
可帮助您特别避免一次更新/删除多行。为实现这一目标,它不允许您在不传递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;
答案 2 :(得分:1)
默认情况下,“安全模式”在MySQL工作台中处于启用状态。您可以将其更改到左上角的mysqlworkbench –>首选项–> sql编辑器–>取消选中安全模式,然后尝试重新连接。或者您也可以输入
SET SQL_SAFE_UPDATES = 0;
这将做同样的事情。
答案 3 :(得分:0)
[编辑] @ManojSalvi得到它,与工作台相关
MySQL error code: 1175 during UPDATE in MySQL Workbench
对我来说工作正常......
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
<强> Results 强>:
| firstname | lastname | password |
|-----------|----------------|----------|
| Pramod | Alfred Schmidt | 123 |
| test | hello h. | *** |