错误代码:1175。您正在使用安全更新模式,并且尝试更新没有使用 KEY 列的 WHERE 的表。要禁用安全模式,请在“首选项”->“SQL 编辑器”中切换该选项并重新连接
我尝试删除一行用户输入的数据(mysql - 后端)
如何删除一行数据?
至少有三种解决方案:
在
WHERE
语句中使用 DELETE
子句,该子句具有仅将删除应用于键列中的特定值的条件。键列必须标识要删除的行。所以它一定是表的主键或唯一键。
DELETE FROM mytable WHERE id = ?;
请注意,即使您确实在查询中引用了键列,优化器也可能由于某种原因不会选择该唯一索引。在这种情况下,您仍然会收到错误 1175。
在
LIMIT
语句中使用 DELETE
子句。这会绕过当前语句的“安全模式”。它将仅删除有限数量的行。尽管您可以使用非常大的数字,甚至大于表中的行数。LIMIT
MySQL 语法不支持将
DELETE FROM mytable WHERE non_key_column = ? LIMIT 1;
与多表
LIMIT
一起使用。
DELETE
语句中执行任何您想要的操作。即使这会导致删除表中的每一行!因此,请确保您理解
DELETE
陈述的逻辑。DELETE
SET sql_safe_updates=0;
DELETE FROM mytable WHERE id=id; -- obviously true on every row
帮助您删除包含 'yyy' 键元素的行,因此可以安全使用。