更新查询无法在mysql工作台中运行

时间:2015-11-28 12:33:39

标签: mysql sql mysql-workbench

我有一个MySql查询,如下所示:

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

我正在使用MySql Workbench来执行查询。

但它没有更新行并显示此错误:

  

您正在使用安全更新模式,并且您尝试更新表格   使用KEY列的WHERE要禁用安全模式,请切换选项   在首选项 - > SQL编辑器并重新连接。

4 个答案:

答案 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

对我来说工作正常......

SQL Fiddle

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. |      *** |