我试图更新访问的列,使其值为1。我使用MySQL工作台,我从工作台内部在SQL编辑器中编写语句。我正在写下面的命令:
UPDATE tablename SET columnname=1;
它给了我以下错误:
您正在使用安全更新模式,并且试图在没有 若要禁用安全模式,请切换该选项 ....
我按照说明,我从编辑菜单中取消了安全更新选项,然后是首选项,然后是SQL编辑器。同样的错误仍然出现&我无法更新此值。求你了,告诉我怎么了?
我试图更新访问的列,使其值为1。我使用MySQL工作台,我从工作台内部在SQL编辑器中编写语句。我正在写下面的命令:
UPDATE tablename SET columnname=1;
它给了我以下错误:
您正在使用安全更新模式,并且试图在没有 若要禁用安全模式,请切换该选项 ....
我按照说明,我从编辑菜单中取消了安全更新选项,然后是首选项,然后是SQL编辑器。同样的错误仍然出现&我无法更新此值。求你了,告诉我怎么了?
当前回答
SET SQL_SAFE_UPDATES = 0;
# your code SQL here
SET 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;
只需输入SET SQL_SAFE_UPDATES = 0;在删除或更新之前,重新设置为1 设置sql_safe_updates = 1
SET SQL_SAFE_UPDATES = 0;
# your code SQL here
SET SQL_SAFE_UPDATES = 1;
SET SQL_SAFE_UPDATES=0;
OR
点击编辑——>首选项
单击“SQL查询”页签,取消选中“安全更新”复选框
查询——>重新连接服务器
现在执行sql查询
在MySQL Workbech版本6.2中,不退出PreferenceSQLQueriesoptions。
In this case it's possible use:SET SQL_SAFE_UPDATES=0;