我试图更新访问的列,使其值为1。我使用MySQL工作台,我从工作台内部在SQL编辑器中编写语句。我正在写下面的命令:

UPDATE tablename SET columnname=1;

它给了我以下错误:

您正在使用安全更新模式,并且试图在没有 若要禁用安全模式,请切换该选项 ....

我按照说明,我从编辑菜单中取消了安全更新选项,然后是首选项,然后是SQL编辑器。同样的错误仍然出现&我无法更新此值。求你了,告诉我怎么了?


当前回答

首选项… “安全更新”…… 重新启动服务器

其他回答

MySql工作台给了我同样的错误,在我取消安全模式后,我重新连接服务器和更新功能工作。 在菜单栏单击“查询”,重新连接服务器

查询菜单->重新连接服务器

如果处于安全模式,则需要在where子句中提供id。所以像这样的东西应该可以工作!

UPDATE tablename SET columnname=1 where id>0

您可以通过以下命令启用和禁用安全更新选项。

禁用,

SET SQL_SAFE_UPDATES=0;

or

SET SQL_SAFE_UPDATES=OFF;

要启用,

SET SQL_SAFE_UPDATES=1;

or

SET SQL_SAFE_UPDATES=ON;

正如在以前的文章中所述,更改数据库服务器的默认设置将导致对已发布项目中的数据进行不正确的查询,从而导致对现有数据的不希望的修改。因此,要实现前面文章中所述的命令,有必要在测试环境中对示例数据运行它们,然后在正确测试后执行它们。

我的建议是写一个WHERE条件语句,如果更新应该对表中的所有行都有效,它将循环遍历所有条件下的所有行。例如,如果表中包含一个ID值,则条件ID > 0可以用于选择所有行:

/**
 * For successful result, "id" column must be "Not Null (NN)" and defined in
 * INT data type. In addition, the "id" column in the table must have PK, UQ
 * and AI attributes.
 */
UPDATE schema_name.table_name
SET first_column_name = first_value, second_column_name = second_value, ...
WHERE id > 0;

如果表中不包含id列,更新操作可以通过检查一个不能为空的列在所有行上运行:

/**
 * "first_column_name" column must be "Not Null (NN)" for successful result.
 */
UPDATE schema_name.table_name
SET first_column_name = first_value, second_column_name = second_value, ...
WHERE table_name.first_column_name IS NOT NULL;

只需输入SET SQL_SAFE_UPDATES = 0;在删除或更新之前,重新设置为1 设置sql_safe_updates = 1