使用MySQL的select * into outfile ‘/tmp/rs.txt’ from tb_name來導出結果時遇到這個問題,安全
當前用戶雖然擁有所有權限,可是file權限須要單獨賦予,使用root用戶執行:
函數
1
|
grant
file
on
*.*
to
test@localhost;
|
在使用update或者delete語句時,在where條件裏面加入的子查詢致使的。
這時候能夠將該表再嵌套一層,即「(select * from table) tt」,得出一個臨時的結果集,
在這個結果集上操做就能夠了。spa
1
2
|
delete
from
mytable
where
mytable.id
not
in
(
SELECT
tt.id
FROM
(
SELECT
*
FROM
mytable) tt
where
tt.siteid=22 );
|
解決辦法是關閉安全模式:code
1
|
SET
SQL_SAFE_UPDATES = 0;
|
注意若是你是使用MySQL Workbench,還須要配置一下軟件的首選項。
由於MySQL Workbench的默認的安全設置是不能批量更新表的。
當要執行的SQL語句是進行批量更新或者刪除的時候就會提示這個錯誤。
解決方法以下:
打開Workbench的菜單[Edit]->[Preferences...]
切換到[SQL Editor]頁面
把[Forbid UPDATE and DELETE statements without a WHERE clause (safe updates)]以前的對勾去掉
點擊[OK]按鈕ci
NOW()函數以`'YYYY-MM-DD HH:MM:SS'返回當前的日期時間,能夠直接存到DATETIME字段中。
CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,能夠直接存到DATE字段中。
CURTIME()以’HH:MM:SS’的格式返回當前的時間,能夠直接存到TIME字段中。get
1
|
insert
into
table
(id ,
time
)
values
(
'1'
,NOW() )
|
我在插入前執行了it
1
|
LOCK TABLES `mytable` WRITE;
|
從新解鎖便可:io
1
|
UNLOCK TABLES;
|