mysqlimport问题“;set@@character\u set\u database=binary;这会阻止加载json值
很长一段时间以来,我一直在使用mysqlimport,没有任何问题。现在,随着mysql 5.7添加了json数据类型支持,我正在尝试将mysqlimport用于包含json数据的行 以下是将使用mysqlimport导入的csv文件中的行的示例:mysqlimport问题“;set@@character\u set\u database=binary;这会阻止加载json值,mysql,load-data-infile,mysqlimport,mysql-json,Mysql,Load Data Infile,Mysqlimport,Mysql Json,很长一段时间以来,我一直在使用mysqlimport,没有任何问题。现在,随着mysql 5.7添加了json数据类型支持,我正在尝试将mysqlimport用于包含json数据的行 以下是将使用mysqlimport导入的csv文件中的行的示例: column_A_value,column_B_value,[{"x":20,"y":"some name"}] 请注意,最后一列类型是json。现在,当使用mysqlimport时,如下所示: mysqlimport -u user -ppass
column_A_value,column_B_value,[{"x":20,"y":"some name"}]
请注意,最后一列类型是json。现在,当使用mysqlimport时,如下所示:
mysqlimport -u user -ppass -h localhost --columns='col_A,col_B,col_C' --local --fields-terminated-by=',' some_db /path/to/products.txt
我遇到以下错误:在使用table:products时,无法从字符集为“binary”的字符串创建JSON值
但是,使用生成的加载文件中的数据
而不是mysqlimport工作起来没有问题!在运行mysqlimport时,我打开了mysql日志,在FILE命令中检查了生成的加载数据,然后复制粘贴,工作正常!我运行了一些类似于:
LOAD DATA LOCAL INFILE '/path/to/products.txt'
INTO TABLE products
成功了!唯一的区别是,在日志中,当运行mysqlimport时,也生成了这一行
Query /*!40101 set @@character_set_database=binary */
然后在文件中加载数据命令被生成,所以行是问题的根源
所以我试着把字符集设为utf8
mysqlimport -u user -ppass -h localhost --columns='col_A,col_B,col_C' --local --fields-terminated-by=',' --default-character-set=utf8 some_db /path/to/products.txt
但同样的错误发生了,却徒劳无功
那么,有没有解决此字符集问题的线索?请检查您的字符集配置:
显示变量,如“%char%”
不响应<代码>--默认字符集
可能仍然是mysqlimport的一个错误:
可能的解决方案:
设置名称utf8代码>在导入之前
mysql
与--默认字符集=utf8
一起使用,而不是mysqlimport
my.cnf
:上述建议对我都不起作用。请注意,在MYSQL版本5或更高版本上,您将需要使用不同的值来设置默认字符集,因为他们不赞成使用默认字符集。这里的例子:使用
mysql
应该是可行的。至于my.cnf
,似乎init connect
和默认字符集
不再属于[mysqld]
部分。
[mysqld]
init-connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_general_ci
default-character-set=utf8
[client]
default-character-set=utf8