MySQL 删除输入数据问题[已关闭]

问题描述 投票:0回答:2

错误代码:1175。您正在使用安全更新模式,并且尝试更新没有使用 KEY 列的 WHERE 的表。要禁用安全模式,请在“首选项”->“SQL 编辑器”中切换该选项并重新连接

我尝试删除一行用户输入的数据(mysql - 后端)

如何删除一行数据?

mysql mysql-workbench
2个回答
0
投票

至少有三种解决方案:

  1. WHERE
    语句中使用
    DELETE
    子句,该子句具有仅将删除应用于键列中的特定值的条件。键列必须标识要删除的行。所以它一定是表的主键或唯一键。

    DELETE FROM mytable WHERE id = ?;
    

    请注意,即使您确实在查询中引用了键列,优化器也可能由于某种原因不会选择该唯一索引。在这种情况下,您仍然会收到错误 1175。

  2. LIMIT
    语句中使用
    DELETE
    子句。这会绕过当前语句的“安全模式”。它将仅删除有限数量的行。尽管您可以使用非常大的数字,甚至大于表中的行数。
    LIMIT

    MySQL 语法不支持将 
    DELETE FROM mytable WHERE non_key_column = ? LIMIT 1;

    与多表

    LIMIT
    一起使用。
    
    

  3. 在会话中禁用安全模式。然后,您可以在同一会话中的后续
  4. DELETE

    语句中执行任何您想要的操作。即使这会导致删除表中的每一行!因此,请确保您理解

    DELETE
    陈述的逻辑。
    DELETE

    
    
  5. 有关完整信息,请阅读有关安全更新模式的文档:
https://dev.mysql.com/doc/refman/8.0/en/mysql-tips.html#safe-updates


-1
投票

SET sql_safe_updates=0; DELETE FROM mytable WHERE id=id; -- obviously true on every row

帮助您删除包含 'yyy' 键元素的行,因此可以安全使用。

    

© www.soinside.com 2019 - 2024. All rights reserved.