我试图更新访问的列,使其值为1。我使用MySQL工作台,我从工作台内部在SQL编辑器中编写语句。我正在写下面的命令:
UPDATE tablename SET columnname=1;
它给了我以下错误:
您正在使用安全更新模式,并且试图在没有 若要禁用安全模式,请切换该选项 ....
我按照说明,我从编辑菜单中取消了安全更新选项,然后是首选项,然后是SQL编辑器。同样的错误仍然出现&我无法更新此值。求你了,告诉我怎么了?
我试图更新访问的列,使其值为1。我使用MySQL工作台,我从工作台内部在SQL编辑器中编写语句。我正在写下面的命令:
UPDATE tablename SET columnname=1;
它给了我以下错误:
您正在使用安全更新模式,并且试图在没有 若要禁用安全模式,请切换该选项 ....
我按照说明,我从编辑菜单中取消了安全更新选项,然后是首选项,然后是SQL编辑器。同样的错误仍然出现&我无法更新此值。求你了,告诉我怎么了?
当前回答
最简单的解决方案是定义行限制并执行。这样做是为了安全。
其他回答
的确,对于大多数例子来说,这是毫无意义的。但最后,我得到了以下声明,它很有效:
update tablename set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz');
正如在以前的文章中所述,更改数据库服务器的默认设置将导致对已发布项目中的数据进行不正确的查询,从而导致对现有数据的不希望的修改。因此,要实现前面文章中所述的命令,有必要在测试环境中对示例数据运行它们,然后在正确测试后执行它们。
我的建议是写一个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;
错误码:1175。您正在使用安全更新模式,并且您试图更新一个没有使用KEY列的WHERE的表。要禁用安全模式,请切换首选项-> SQL编辑器中的选项并重新连接。
暂时关闭“安全更新模式”
SET SQL_SAFE_UPDATES = 0;
UPDATE options SET title= 'kiemvieclam24h' WHERE url = 'http://kiemvieclam24h.net';
SET SQL_SAFE_UPDATES = 1;
永远关闭“安全更新模式”
Mysql工作台8.0:
MySQL Workbench => [ Edit ] => [ Preferences ] -> [ SQL Editor ] -> Uncheck "Safe Updates"
旧版本可以:
MySQL Workbench => [Edit] => [Preferences] => [SQL Queries]
SET SQL_SAFE_UPDATES = 0;
# your code SQL here
SET SQL_SAFE_UPDATES = 1;
您可以通过以下命令启用和禁用安全更新选项。
禁用,
SET SQL_SAFE_UPDATES=0;
or
SET SQL_SAFE_UPDATES=OFF;
要启用,
SET SQL_SAFE_UPDATES=1;
or
SET SQL_SAFE_UPDATES=ON;