最近在項(xiàng)目中遇到了一個(gè)問(wèn)題,就是使用mysql刪除數(shù)據(jù)時(shí),總是刪不掉。
我按照平常的寫法,使用DELETE FROM tablename WHERE condition;語(yǔ)句,但是執(zhí)行后發(fā)現(xiàn)數(shù)據(jù)并沒(méi)有刪除。
我又嘗試了TRUNCATE TABLE tablename;這種清空表的方式,同樣無(wú)效。
我開始懷疑是不是因?yàn)闂l件不正確,所以我檢查了很多次,但數(shù)據(jù)還是刪不掉。
后來(lái)我在網(wǎng)上查找相關(guān)資料,發(fā)現(xiàn)這可能是由于mysql的“安全模式”造成的。
mysql>DELETE FROM tablename WHERE condition; ERROR 1175 (HY000): You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
因?yàn)樵趍ysql的安全模式下,如果你沒(méi)有指定KEY column,也就是沒(méi)有使用WHERE條件中的索引列,DELETE和UPDATE命令就會(huì)被拒絕。
這時(shí)我們可以通過(guò)設(shè)置SESSION級(jí)別的safe_updates變量來(lái)關(guān)閉安全模式,即運(yùn)行以下命令:
mysql>SET SESSION sql_safe_updates=0;
關(guān)閉后我們就可以正常刪除數(shù)據(jù)了,不過(guò)一定要慎重操作。
以上就是我在使用mysql時(shí)遇到的刪除數(shù)據(jù)問(wèn)題以及解決方法。