mysql workbench,update 语句明明写了where,但是报错信息却是without a where。

问题

mysql查询语句: UPDATE student SET age = 29, city='shanghai' WHERE id = 3;
上面的查询语句已经包含了where条件,但是返回的错误信息如下:
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode,toggle the option in Preferences ->SOL Editor and reconnect. 0.000 sec

2fcd316f-fb09-4be8-96b1-7ef97332a214

问题原因

即使已经在UPDATE查询中使用了 WHERE子句指定条件,但是 MySQL依然报错表示正在使用安全更新模式并且没有使用包含键列的 WHERE 子句。这可能是因为表中没有定义主键或唯一索引,导致 MySQL无法识别用于限定更新范围的唯一标识列。

解决方案

  1. 增加语句:设置主键
    ALTER TABLE student MODIFY id INT PRIMARY KEY;

  2. 关闭安全更新模式(不建议)

    SET SQL_SAFE_UPDATES = 0;