【Mysql】执行删除 *** 作时,报错,code=1175

【Mysql】执行删除 *** 作时,报错,code=1175,第1张

delete from Course where Cid not like "C%"

在执行这条命令时,mysql报错:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences ->SQL Editor and reconnect.

这是因为在mysql在safe-updates模式中,如果where后跟的条件不是主键id就会报这种错误。出现1175错误时,只要更改一下mysql的安全模式就行,以下两种方式都行:

mysql> set sql_safe_updates=0 

mysql>set sql_safe_updates=off    

SQL_SAFE_UPDATES有两个取值0和1, 或ON和OFF,默认值是1:

SQL_SAFE_UPDATES = 1/ON时,不带where和limit条件的update和delete *** 作语句是无法执行的,即使是有where和limit条件但不带主键id的update和delete也不能执行。 

SQL_SAFE_UPDATES =0/OFF时,update和delete *** 作将会顺利执行。

所以,出现1175错误的时候,可以先设置SQL_SAFE_UPDATES的值为0/OFF,然后再执行更新即可。

你写了一条正常的update 或者 delete 语句时,语句本身是没问题的,但是却执行不了。原因是是MySQL Workbench的安全设置。当要执行的SQL语句是进行批量更新或者删除的时候就会提示这个错误。

打开Workbench的菜单Edit->Preferences xxx->切换到SQL Editor

把Forbid UPDATE and DELETE statements without a WHERE clause (safe updates)的勾去掉击[OK]按钮重新启动就OK了。

或者在每句语句前,加上‘SET SQL_SAFE_UPDATES=0’

问题就解决了。

(ps:以后我会分享我所遇到的问题,这里持续更新!)

一.MySQL密码的恢复方法之一如果忘记了MySQL的root密码,可以用以下方法重新设置:1.切换到root下suroot2.KILL掉系统里的MySQL进程;killall-TERMmysqld3.用以下命令启动MySQL,以不检查权限的方式启动;safe_mysqld--skip-grant-tables&4.然后用空密码方式使用root用户登录MySQL;mysql-uroot5.修改root用户的密码;mysql>updatemysql.usersetpassword=PASSWORD('123456')whereUser='root'mysql>flushprivilegesmysql>quit重新启动MySQL,就可以使用新密码登录了。二.MySQL密码的恢复方法二有可能你的系统没有safe_mysqld程序(ubuntu *** 作系统,apt-get安装的mysql),下面方法可以恢复1.切换到root下suroot2.停止mysqld;/etc/init.d/mysqlstop3.用以下命令启动MySQL,以不检查权限的方式启动;mysqld--skip-grant-tables&4.然后用空密码方式使用root用户登录MySQL;mysql-uroot4.修改root用户的密码为123456(当然,你需要将123456改成你要设置的密码);mysql>updatemysql.usersetpassword=PASSWORD('123456')whereUser='root'mysql>flushprivilegesmysql>quit重新启动MySQL/etc/init.d/mysqlrestart就可以使用新密码123456登录了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/8635955.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-19
下一篇2023-04-19

发表评论

登录后才能评论

评论列表(0条)

    保存