【问题标题】:Update query not working in mysql workbench更新查询在 mysql 工作台中不起作用
【发布时间】:2016-03-02 11:32:09
【问题描述】:

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

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

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

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

您正在使用安全更新模式,并且您尝试在不更新的情况下更新表 使用 KEY 列的 WHERE 要禁用安全模式,请切换选项 在 Preferences -> SQL Editor 中并重新连接。

【问题讨论】:

  • "显示错误" ​​=> 哪一个?
  • 我的错误是 - 您正在使用安全更新模式,并且您尝试更新没有使用 KEY 列的 WHERE 的表 要禁用安全模式,请切换 Preferences -> SQL Editor 中的选项并重新连接。
  • 请查看类似问题http://stackoverflow.com/questions/11448068/mysql-error-code-1175-during-update-in-mysql-workbench

标签: mysql sql mysql-workbench


【解决方案1】:

我认为这与SAFE UPDATES 没有任何关系,因为您已明确表示WHERE 您想进行更改。 我遇到了同样的问题,但我尝试将 列的名称 包含在反引号 ` 中并且它起作用了。您可以在键盘上的数字 1 左侧找到反引号。

您可以尝试的另一件事是SELECT 表格 并双击您想要UPDATE 的项目,然后应用窗口右下角的更改。

【讨论】:

    【解决方案2】:

    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;
    

    【讨论】:

      【解决方案3】:

      “安全模式”在 MySQL 工作台中默认开启。您可以更改它转到左上角的mysqlworkbench –> 首选项–> sql 编辑器–> 取消选中安全模式,然后尝试重新连接。或者你可以输入

      SET SQL_SAFE_UPDATES = 0;

      这也是一样的。

      【讨论】:

        【解决方案4】:

        在 mysql workbench 中默认启用安全模式,因此如果您的 WHERE 子句没有密钥,它将阻止运行查询。尝试使用这些步骤禁用它 -

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

        注意 - 尝试重新连接服务器 (Query > Reconnect to Server) 然后再次运行查询。

        【讨论】:

        • 要应用此解决方案,请在取消选中后重新启动您的 MySQL 工作台,它将起作用。
        【解决方案5】:

        [编辑] @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. |      *** |
        

        【讨论】:

        • 正如他已经解释的那样,它在工作台中不起作用,它与查询本身无关
        • @davejal 他只在我的帖子之后给我们错误消息,所以我找不到它与工作台相关,之后我用a comment指向error code: 1175 during UPDATE in MySQL Workbench的链接
        • 好的,我删除了反对票,但您的回答仍然没有帮助,说明它对您来说很好。你应该试着找出为什么它对他不起作用
        • @davejal thx;重现错误是首先要做的事情:显示相同的代码工作可能有助于找到错误输入或与环境相关的错误(就像这个错误,因为它是工作台的安全模式,而不是mysql);但是,是的,我通常会尽力提供更多帮助;)
        猜你喜欢
        • 2021-07-23
        • 2018-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-02
        • 1970-01-01
        • 2015-02-24
        相关资源
        最近更新 更多