首页 文章

MySQL错误代码:在MySQL Workbench的UPDATE期间为1175

提问于
浏览
571

我正在尝试更新列 visited 以赋予它值1.我使用MySQL工作台,并且我'm writing the statement in the SQL editor from inside the workbench. I' m编写以下命令:

UPDATE tablename SET columnname=1;

它给我以下错误:

您正在使用安全更新模式,并且您尝试更新没有使用KEY列的WHERE的表要禁用安全模式,请切换选项....

我按照说明操作,然后取消选中 Edit 菜单中的 safe update 选项,然后选择 Preferences 然后 SQL Editor . 仍然出现相同的错误,我无法更新此值 . 拜托,告诉我有什么问题?

15 回答

  • 23

    在MySQL Workbech 6.2版中,不退出Preference SQLQueries 选项 .
    在这种情况下,可以使用: SET SQL_SAFE_UPDATES=0;

  • 33

    我找到了答案 . 问题是我必须在表名前加上模式名称 . 即命令应该是:

    UPDATE schemaname.tablename SET columnname=1;
    

    谢谢大家 .

  • 0

    没错,大多数例子都没有意义 . 但最后,我来到以下声明,它工作正常:

    update tablename  set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz');
    
  • 114

    如果您处于安全模式,则需要在where子句中提供id . 所以这样的事情应该有效!

    UPDATE tablename SET columnname=1 where id>0
    
  • 3
    SET SQL_SAFE_UPDATES=0;
    UPDATE tablename SET columnname=1;
    SET SQL_SAFE_UPDATES=1;
    
  • 39
    SET SQL_SAFE_UPDATES=0;
    

    要么

    Go to Edit --> Preferences

    Click SQL Queries 选项卡和 uncheck Safe Updates 复选框

    Query --> Reconnect to Server

    现在执行你的SQL查询

  • 47
    • 首选项......

    • "Safe Updates" ......

    • 重启服务器

  • 16

    看起来你的MySql会话有safe-updates option集 . 这意味着如果不在where子句中指定密钥(例如 primary key ),则无法更新或删除记录 .

    尝试:

    SET SQL_SAFE_UPDATES = 0;
    

    或者,您可以修改查询以遵循规则(在 where clause 中使用 primary key ) .

  • 18

    由于问题得到了回答并且与安全更新无关,这可能是错误的地方;我发帖只是为了添加信息 .

    我试图成为一个好公民并修改查询以使用将更新的临时表:

    create temporary table ids ( id int )
        select id from prime_table where condition = true;
    update prime_table set field1 = '' where id in (select id from ids);
    

    失败 . 将更新修改为:

    update prime_table set field 1 = '' where id <> 0 and id in (select id from ids);
    

    那很有效 . 好吧 - 如果我总是添加键<> 0来绕过安全更新检查,或者甚至设置SQL_SAFE_UPDATE = 0,那么我在查询中丢失了'检查' . 我不妨永久关掉这个选项 . 我想它会删除和更新两个步骤而不是一个...但是如果你输入的速度足够快并且不再考虑关键是特殊的而是仅仅是一个令人讨厌的...

  • 13

    所需要的只是:开始一个新的查询并运行:

    SET SQL_SAFE_UPDATES = 0;
    

    然后:运行您之前未运行的尝试运行的查询 .

  • 366

    这适用于Mac,但除了首选项的位置外,其他操作系统必须相同 .

    我们尝试不安全的 DELETE 操作时得到的错误

    在新窗口中,取消选中选项 Safe updates

    Then close and reopen the connection. No need to restart the service.

    现在我们将再次尝试 DELETE 成功结果 .

    那么这个安全更新又是什么呢?这不是一件坏事 . 这就是MySql所说的 .

    Using the --safe-updates Option

    对于初学者,一个有用的启动选项是--safe-updates(或--i-am-a-dummy,具有相同的效果) . 对于可能已发出DELETE FROM tbl_name语句但忘记了WHERE子句的情况很有用 . 通常,这样的语句会删除表中的所有行 . 使用--safe-updates,您只能通过指定标识它们的键值来删除行 . 这有助于防止事故 . 当您使用--safe-updates选项时,mysql在连接到MySQL服务器时会发出以下语句:

    SET sql_safe_updates=1, sql_select_limit=1000, sql_max_join_size=1000000;
    

    It is safe to turn on this option while you deal with production database. Otherwise, you must be very careful not accidentally deleting important data.

  • 3

    错误代码:1175 . 您正在使用安全更新模式,并且您尝试更新没有使用KEY列的WHERE的表要禁用安全模式,请在Preferences - > SQL Editor中切换选项并重新连接 .

    Turn OFF "Safe Update Mode" temporary

    SET SQL_SAFE_UPDATES = 0;
    UPDATE options SET title= 'kiemvieclam24h' WHERE url = 'http://kiemvieclam24h.net';
    SET SQL_SAFE_UPDATES = 1;
    

    Turn OFF "Safe Update Mode" forever

    Mysql工作台8.0:

    MySQL Workbench => [ Edit ] => [ Preferences ] -> [ SQL Editor ] -> Uncheck "Safe Updates"
    

    旧版本可以:

    MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]
    
  • 95

    最简单的解决方案是定义行限制并执行 . 这样做是出于安全目的 .

  • 8

    No need to set SQL_SAFE_UPDATES to 0 ,我真的不鼓励它这样做 . 只需在WHERE子句中添加一个KEY-value,它匹配所有类似于主键的比较0,所以不要写:

    UPDATE customers SET countryCode = 'USA'
        WHERE country = 'USA';               -- which gives the error, you just write:
    
    UPDATE customers SET countryCode = 'USA'
        WHERE (country = 'USA' AND customerNumber <> 0); -- Because customerNumber is a primary key you got no error 1175 any more.
    

    现在您可以放心,每条记录都会像您期望的那样更新 .

  • 1194

    执行UPDATE命令之前,请执行以下步骤: In MySQL Workbench

    • 转到 Edit - > Preferences

    • 单击 "SQL Editor" 选项卡和 uncheck "Safe Updates" check box

    • Query - > Reconnect to Server //注销然后登录

    • 现在执行您的SQL查询

    p.s., No need to restart the MySQL daemon!

相关问题