--secure-file-priv option so it cannot execute this statement

MYSQL导入数据出现The MySQL server is running with the --secure-file-priv option so it cannot execute this statement


mysql> show variables like '%secure%';
+--------------------------+-----------------------+
| Variable_name            | Value                 |
+--------------------------+-----------------------+
| require_secure_transport | OFF                   |
| secure_auth              | ON                    |
| secure_file_priv         | /var/lib/mysql-files/ |
+--------------------------+-----------------------+
3 rows in set (0.27 sec)

 
如果value值为null,则为禁止;如果有文件夹目录,则只允许改目录下文件(测试子目录也不行);如果为空,则不限制目录;

重启mysql: 

关闭mysql:mysqladmin -uroot shutdown -p

启动mysql:

su root

./bin/mysqld_safe --basedir=/usr/local/mysql/ --datadir=/home/common/mysql_data/ --user=mysql &

set global secure_file_priv='';
ERROR 1238 (HY000): Variable 'secure_file_priv' is a read only variable
报错原因:
参数为只读参数,需要在配置文件/etc/my.cnf或windows下的my.ini中更改该参数,之后重启数据库


secure_file_priv参数说明
这个参数用来限制数据导入和导出操作的效果,例如执行LOAD DATA、SELECT ... INTO OUTFILE语句和LOAD_FILE()函数。这些操作需要用户具有FILE权限。
如果这个参数为空,这个变量没有效果;
如果这个参数设为一个目录名,MySQL服务只允许在这个目录中执行文件的导入和导出操作。这个目录必须存在,MySQL服务不会创建它;
如果这个参数为NULL,MySQL服务会禁止导入和导出操作。这个参数在MySQL 5.7.6版本引入。 


重新导入:

load data infile '/home/xxx/Desktop/3333/head.csv' 
-> into table `table` 
-> character set utf8 
-> fields terminated by ' '
-> lines terminated by ' ';

导入数据时出错:

ERROR 1261 (01000): Row 1 doesn't contain data for all columns

修改 sql_mode:

set global sql_mode='';

导入数据可能出现的问题及解决方案:

Error 1261(01000):Row XX doesn't contain data for all columns

Method:本错误信息提示第XX行数据不足,查看你数据库表中建立的字段和数据中提供的字段数目是否相同,只有二者数目一致,才可以导入。

Error 1366(HY000):Incorrect string value: 'x95FxBExF4xC6xFB...' for column 'enterprise' at row XX

Method:本错误信息提示第XX行‘enterprise’字段出现不正确的字符,查找之后发现我在这个字段的数据含有2个比较复杂的汉字“旻爵”,可能无法识别,把这2个字去掉之后这个错误便消失了。

Error 1366(HY000):Incorrect integer value: ' ' for column 'money' at row XX

Method:本错误信息提示第XX行出现不正确的int值,可能原因是数据库“money”字段定义的数据类型是int型,而数据中存储的却不是int型(可能是double型、float型之类的)--这种情况一般是数据类型出现不一致的问题。

Error 1265(01000):Data truncated for column 'money' at row XX

Method:本错误信息提示第XX行数据被截断,可能原因是数据库中‘money’字段是double型或者float型,但是数据文件中可能存在null值,即这个数据值可能是不存在的,解决方案是将这个缺失的字段补‘0’。

原文地址:https://www.cnblogs.com/timssd/p/9530175.html