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