我试图更新访问的列,使其值为1。我使用MySQL工作台,我从工作台内部在SQL编辑器中编写语句。我正在写下面的命令:
UPDATE tablename SET columnname=1;
它给了我以下错误:
您正在使用安全更新模式,并且试图在没有 若要禁用安全模式,请切换该选项 ....
我按照说明,我从编辑菜单中取消了安全更新选项,然后是首选项,然后是SQL编辑器。同样的错误仍然出现&我无法更新此值。求你了,告诉我怎么了?
我试图更新访问的列,使其值为1。我使用MySQL工作台,我从工作台内部在SQL编辑器中编写语句。我正在写下面的命令:
UPDATE tablename SET columnname=1;
它给了我以下错误:
您正在使用安全更新模式,并且试图在没有 若要禁用安全模式,请切换该选项 ....
我按照说明,我从编辑菜单中取消了安全更新选项,然后是首选项,然后是SQL编辑器。同样的错误仍然出现&我无法更新此值。求你了,告诉我怎么了?
当前回答
最简单的解决方案是定义行限制并执行。这样做是为了安全。
其他回答
执行UPDATE命令前,请按照以下步骤进行操作: 在MySQL Workbench中
点击编辑——>首选项 单击“SQL编辑器”页签,取消选中“安全更新”复选框 查询——>重新连接服务器//注销,然后登录 现在执行SQL查询
另外,不需要重新启动MySQL守护进程!
看起来你的MySql会话有安全更新选项集。这意味着如果在where子句中没有指定键(例如主键),就不能更新或删除记录。
Try:
SET SQL_SAFE_UPDATES = 0;
或者您可以修改您的查询以遵循规则(在where子句中使用主键)。
这适用于Mac,但对于其他操作系统必须相同,除了首选项的位置。
尝试不安全的DELETE操作时得到的错误
在新窗口中,取消选中“安全更新”选项
然后关闭并重新打开连接。无需重新启动服务。
现在我们将再次尝试DELETE,并获得成功的结果。
那么这些安全更新到底是怎么回事呢?这不是一件坏事。这就是MySql的说法。
使用——safe-updates选项
For beginners, a useful startup option is --safe-updates (or --i-am-a-dummy, which has the same effect). It is helpful for cases when you might have issued a DELETE FROM tbl_name statement but forgotten the WHERE clause. Normally, such a statement deletes all rows from the table. With --safe-updates, you can delete rows only by specifying the key values that identify them. This helps prevent accidents. When you use the --safe-updates option, mysql issues the following statement when it connects to the MySQL server:
SET sql_safe_updates=1, sql_select_limit=1000, sql_max_join_size=1000000;
在处理生产数据库时,打开这个选项是安全的。否则,您必须非常小心,不要意外删除重要数据。
在MySQL Workbech版本6.2中,不退出PreferenceSQLQueriesoptions。
In this case it's possible use:SET SQL_SAFE_UPDATES=0;
的确,对于大多数例子来说,这是毫无意义的。但最后,我得到了以下声明,它很有效:
update tablename set column1 = '' where tablename .id = (select id from tablename2 where tablename2.column2 = 'xyz');