mysqlimport问题“;set@@character\u set\u database=binary;这会阻止加载json值

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

很长一段时间以来,我一直在使用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 -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