mysql load 忽略错误_Mysql load data 命令解析、处理 error 29 (ErrCode: 13) 错误(在ubuntu环境下)...

[REPLACE | IGNORE]

INTO TABLE tbl_name

[FIELDS

[TERMINATED BY ‘string‘]

[[OPTIONALLY] ENCLOSED BY ‘char‘]

[ESCAPED BY ‘char‘ ]

]

[LINES

[STARTING BY ‘string‘]

[TERMINATED BY ‘string‘]

]

[IGNORE number LINES]

[(col_name_or_user_var,...)]

[SET col_name = expr,...]]

ignore 和 replace 用于区别当读入文本和原有表格中主键冲突的记录时候的处理方式。

fields 之后的 terminated by 设置字段终结符(分隔符),enclosed by 设置外括字符,escape by 设置转义字符(这一点不是很确定)。

lines 之后的 starting by 设置行前缀,读入时候忽略掉, terminated by 设置换行符。更多细节参考第一条链接。

然后在使用过程中,很容易出现错误:

ERROR 29 (HY000): File ‘test.txt’ not found (Errcode: 13)

网上有很多说在命令中加local关键字,可惜在我的电脑上。。。然并卵。。。在命令行下可以知道errcode 13指的是访问权限问题:

xyb@xyb-computer:~$ perror 13

OS error code 13: Permission denied

就算改变了test.txt文件的访问权限,例如 chmod o+r test.txt 依然会出现上述问题。要解决这个问题会扯到 AppArmor。这是一个保护机制,限制每个程序对特定目录和文件的访问权限。也即是说,当前 mysql 程序访问这个文件的权限被 AppArmor 限制住了。关于 AppArmor 参考第二条链接(维基百科)。

真正可以做的是给mysql程序读取这个文件的权限,按照以下几个步骤可以做到:

1)打开 /etc/apparmor.d/usr.sbin.mysqld 文件

2)此时能看到很多关于mysql能够读写为目录和文件的记录,比如:

#Other contents

/usr/sbin/mysqld {

#Other contents

/var/log/mysql.log rw,

/var/log/mysql.err rw,

#Other contents

#This will be your dir definition

/tmp/ r,

/tmp/* rw,

#Other contents

}

在最后加上需要读写的文件的相应权限,保存并退出。

3)重新导入 AppArmor 配置,利用 /etc/init.d/apparmor reload 命令

4)重新启动 mysql,利用 service mysql restart 命令

至此问题应该解决了。不过这可能是个不安全的解决办法,需要慎重。具体参考第三条链接。

参考链接:

http://www.2cto.com/database/201108/99655.html

https://en.wikipedia.org/wiki/AppArmor

https://oldwildissue.wordpress.com/2013/12/11/fixing-mysql-error-29-errcode-13-in-ubuntu/

Mysql load data 命令解析、处理 error 29 (ErrCode: 13) 错误(在ubuntu环境下)

标签:mysql   load-data   error-29

本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉

本文系统来源:http://blog.csdn.net/xiangyubobo/article/details/46536637

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值