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

UPDATE tablename SET columnname=1;

它给了我以下错误:

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

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


当前回答

第一: 请确保您想要更新该表中的所有记录,因为如果没有where子句,更新该表中的所有记录是危险的。很少需要更新表中的所有记录。

大多数时候,你想要更新特定的记录,其中应该包括where cluase,如果你再次想要更新所有的记录,打开MySQL工作台>编辑>首选项>SQL编辑>向下滚动,并取消选中“安全更新(拒绝更新和删除没有限制)”。

这是为了安全更新。

如果您取消选中上面所说的,那么您可能会更新所有记录,而不是导致数据库备份恢复的一条记录。没有回滚。

其他回答

SET SQL_SAFE_UPDATES=0;

OR

点击编辑——>首选项

单击“SQL查询”页签,取消选中“安全更新”复选框

查询——>重新连接服务器

现在执行sql查询

在工作台上,我通过禁用安全更新模式解决了这个问题:

-编辑->首选项-> Sql编辑器然后取消安全更新。

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

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

我的建议是写一个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;

第一: 请确保您想要更新该表中的所有记录,因为如果没有where子句,更新该表中的所有记录是危险的。很少需要更新表中的所有记录。

大多数时候,你想要更新特定的记录,其中应该包括where cluase,如果你再次想要更新所有的记录,打开MySQL工作台>编辑>首选项>SQL编辑>向下滚动,并取消选中“安全更新(拒绝更新和删除没有限制)”。

这是为了安全更新。

如果您取消选中上面所说的,那么您可能会更新所有记录,而不是导致数据库备份恢复的一条记录。没有回滚。