mysql load data遇到的两个错误和解决方法

1.load数据遇到报错1

mysql> load data infile "/root/mysql_test/mysql_t1data" into table t1;
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
mysql>

secure_file_priv参数用于限制LOAD DATA, SELECT …OUTFILE, LOAD_FILE()传到哪个指定目录。

secure_file_priv 为 NULL 时,表示限制mysqld不允许导入或导出。
secure_file_priv 为 /tmp 时,表示限制mysqld只能在/tmp目录中执行导入导出,其他目录不能执行。
secure_file_priv 没有值时,表示不限制mysqld在任意目录的导入导出。

查看现在的配置

mysql> show global variables like ‘%secure_file_priv%‘;
+------------------+-----------------------+
| Variable_name? ? | Value? ? ? ? ? ? ? ?? |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.00 sec)

不能直接修改

mysql> set global secure_file_priv=‘‘;
ERROR 1238 (HY000): Variable ‘secure_file_priv‘ is a read only variable
mysql>

打开my.cnf,加入以下语句后重启mysql。
secure_file_priv=‘‘

重启后进去查看

mysql> show global variables like ‘%secure_file_priv%‘;
+------------------+-------+
| Variable_name? ? | Value |
+------------------+-------+
| secure_file_priv |? ? ?? |
+------------------+-------+
1 row in set (0.02 sec)

2.load数据遇到报错2

mysql> load data infile "/root/mysql_test/mysql_t1data" into table t1;
ERROR 13 (HY000): Can‘t get stat of ‘/root/mysql_test/mysql_t1data‘ (OS errno 13 - Permission denied)
mysql>

检索下数据目录在哪

mysql> show variables like ‘%datadir%‘;
+---------------+-----------------+
| Variable_name | Value? ? ? ? ?? |
+---------------+-----------------+
| datadir? ? ?? | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.03 sec)

mysql>

检查下这个目录的权限情况

[[email protected] mysql_test]# ll /var/lib/mysql
total 168048
-rw-r----- 1 mysql mysql? ? ?? 56 Nov 26 03:22 auto.cnf
-rw-r----- 1 mysql mysql? ? ? 178 Nov 26 03:49 binlog.000001
-rw-r----- 1 mysql mysql? ? ? 661 Nov 26 04:49 binlog.000002
-rw-r----- 1 mysql mysql? ? ? 155 Nov 27 01:30 binlog.000003
-rw-r----- 1 mysql mysql? ? ? 178 Nov 27 03:03 binlog.000004
-rw-r----- 1 mysql mysql? ? ? 178 Nov 27 03:03 binlog.000005
-rw-r----- 1 mysql mysql? ? ? 178 Nov 27 03:07 binlog.000006

在看看
/root/mysql_test/mysql_t1data
的权限情况

[[email protected] mysql_test]# ll
total 8
-rw-r--r-- 1 root root 117 Dec 13 02:09 mysql_t1
-rw-r--r-- 1 root root? 28 Dec 13 02:10 mysql_t1data
[[email protected] mysql_test]#

修改权限看看
[[email protected] mysql_test]# chmod 777 *
[[email protected] mysql_test]# ll
total 8
-rwxrwxrwx 1 root root 117 Dec 13 02:09 mysql_t1
-rwxrwxrwx 1 root root? 28 Dec 13 02:10 mysql_t1data
[[email protected] mysql_test]#

权限都改好了还是不对
mysql> load data infile ‘/root/mysql_test/mysql_t1data‘ into table t1;
ERROR 13 (HY000): Can‘t get stat of ‘/root/mysql_test/mysql_t1data‘ (OS errno 13 - Permission denied)
mysql>

网上查找资料发现mysql默认设置了使用/tmp作为临时读写目录
检索见下

mysql> show variables like ‘%tmp%‘;
+----------------------------------+-----------+
| Variable_name? ? ? ? ? ? ? ? ? ? | Value? ?? |
+----------------------------------+-----------+
| default_tmp_storage_engine? ? ?? | InnoDB? ? |
| innodb_tmpdir? ? ? ? ? ? ? ? ? ? |? ? ? ? ?? |
| internal_tmp_disk_storage_engine | InnoDB? ? |
| internal_tmp_mem_storage_engine? | TempTable |
| slave_load_tmpdir? ? ? ? ? ? ? ? | /tmp? ? ? |
| tmp_table_size? ? ? ? ? ? ? ? ?? | 16777216? |
| tmpdir? ? ? ? ? ? ? ? ? ? ? ? ?? | /tmp? ? ? |
+----------------------------------+-----------+
7 rows in set (0.00 sec)

mysql>

把文件移到/tmp目录下试试

[[email protected] ~]# mv mysql_test/ /tmp
[[email protected] ~]# ll /tmp/mysql_test/
total 8
-rwxrwxrwx 1 mysql mysql 117 Dec 13 02:09 mysql_t1
-rwxrwxrwx 1 mysql mysql? 28 Dec 13 02:10 mysql_t1data
[[email protected] ~]#

再load看看

mysql> load data infile ‘/tmp/mysql_test/mysql_t1data‘ into table t1;
ERROR 1261 (01000): Row 1 doesn‘t contain data for all columns
mysql>

成功了。这个错误是别的问题了。
下一个问题来处理

原文地址:http://blog.51cto.com/goome/2330079

时间: 2024-10-13 21:31:33

mysql load data遇到的两个错误和解决方法的相关文章

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".错误的解决方法

1.今天新git下来的项目报错如下: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 2.解决办法 我的解决方法是,看报错

Navicat for MySql 输入中文字符,提示1366错误的解决方法

若表格已经保存了默认的字符集,无法输入中文字符 此时,选中该表,设计表,选择要输入中文字符的列,修改其"字符集"和"排序规则"为截图所示,即可! 其他方式的错误,可参考 https://blog.csdn.net/ZhouSanduo18/article/details/47905419 这个写的很全面 原文地址:https://www.cnblogs.com/sky-x2017/p/mysql1.html

load data infile 导入数据 中文显示乱码 解决方法

各种字符参数统一为utf8 SET character_set_client = utf8 ; SET character_set_connection = utf8 ; SET character_set_database = utf8 ; SET character_set_results = utf8 ; SET character_set_server = utf8 ; SET collation_connection = utf8 ; SET collation_database =

mysql load data infile的使用 和 SELECT into outfile备份数据库数据

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt' [REPLACE | IGNORE] INTO TABLE tbl_name [FIELDS [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char' ] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string

Mysql load data infile 导入数据出现:Data truncated for column

[1]Mysql load data infile 导入数据出现:Data truncated for column .... 可能原因: (1)数据库表的字段类型长度不够,或改为其他数据类型(即类型错误)试试. (2)Myysql的my.ini配置文件中有一个max_allowed_packet配置项,默认是4M. 如果没有修改默认的这个配置项而你要导入的文件大于4M的话,可能出现上述类似的数据导入错误. Good Good Study, Day Day Up. 顺序 选择 循环 总结 原文地

启动Eclipse 弹出“Failed to load the JNI shared library”错误的解决方法

原因1:eclipse的版本与jre或者jdk版本不一致 对策:要么两者都安装64位的,要么都安两个是32位一个是64位. 原因2:给定目录下jvm.dll不存在 对策:(1)重新安装jre或者jdk并配置好环境变量.(2)copy一个jvm.dll放在该目录下. 原因1的概率更大一些,原因2不太可能发生. 启动Eclipse 弹出"Failed to load the JNI shared library"错误的解决方法,布布扣,bubuko.com

Adobe Dreamweaver CC MySQL连接 报404错误的解决方法

Adobe Dreamweaver CC MySQL连接时总报404报错,并给以下两个提示: 1) 在该服务器机器上没有测试服务器运行. 2) 为该站点指定的测试服务器没有映射到http://localhost/_mmServerScripts/MMHTTPDB.phpURL.请确认url前缀映射到了你站点的根上. 网上翻了一堆网站,折腾了两三天,发现可以按如下方法解决: 1)首先要在http://localhost/security/index.php配置mysql的访问密码(我用的是XAMP

启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!

启动 Eclipse 弹出"Failed to load the JNI shared library jvm.dll"错误的解决方法 http://blog.csdn.net/zyz511919766/article/details/7442633   原因1:给定目录下jvm.dll不存在. 对策:(1)重新安装jre或者jdk并配置好环境变量.(2)copy一个jvm.dll放在该目录下. 原因2:eclipse的版本与jre或者jdk版本不一致 对策:要么两者都安装64位的,要

启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!

原因1:给定目录下jvm.dll不存在. 对策:(1)重新安装jre或者jdk并配置好环境变量.(2)copy一个jvm.dll放在该目录下. 原因2:eclipse的版本与jre或者jdk版本不一致 对策:要么两者都安装64位的,要么都安装32位的,不能一个是32位一个是64位. 原因2的概率更大一些,原因1不太可能发生 启动 Eclipse 弹出"Failed to load the JNI shared library jvm.dll"错误的解决方法!