MySQL常見的應用異常記錄

>>Error Code: 1045. Access denied for user 'test'@'%' (using password: YES)

使用MySQL的select * into outfile ‘/tmp/rs.txt’ from tb_name來導出結果時遇到這個問題,安全

當前用戶雖然擁有所有權限,可是file權限須要單獨賦予,使用root用戶執行:

函數

1
grant  file  on  *.*  to  test@localhost;

>>Error Code: 1093. You can't specify target table 'mytable' for update in FROM clause

在使用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 );  

>>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.

解決辦法是關閉安全模式: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


>>MySQL插入時使用當前時間

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() )

 

>>Error Code: 1100. Table 'mytable' was not locked with LOCK TABLES

我在插入前執行了it

1
LOCK TABLES `mytable` WRITE;

從新解鎖便可:io

1
UNLOCK TABLES;
相關文章
相關標籤/搜索