2016-03-23 7 views
4

ロードJSONは値防ぎますjsonデータ。最後の列タイプがJSONであることmysqlimportは問題は「設定@@ =バイナリcharacter_set_database」私は、MySQL 5.7はJSONデータ型のサポートを追加したとして、今、私は行を含むとmysqlimportはを使用しようとしている、長い時間のために問題なくmysqlimportはを使用している

column_A_value,column_B_value,[{"x":20,"y":"some name"}] 

注意:ここ

はmysqlimportはを使用してインポートされたCSVファイルの行の例です。以下のようmysqlimportはを使用している場合今:

mysqlimport -u user -ppass -h localhost --columns='col_A,col_B,col_C' --local --fields-terminated-by=',' some_db /path/to/products.txt 

私は、次のエラーを得た:Cannot create a JSON value from a string with CHARACTER SET 'binary'., when using table: products

は、しかし、生成LOAD DATA IN FILEの代わりに、mysqlimportは問題なく働いたを使用して!私はmysqlログを開いて、mysqlimportを実行したときに生成されたLOAD DATA IN FILEコマンドをチェックし、コピーして貼り付けました。問題なく動作しました!私は次のようなものを走らせた:

LOAD DATA LOCAL INFILE '/path/to/products.txt' 
INTO TABLE products 

そして、それは働いた!その行が問題の原因であるので、ログに、mysqlimportはこの行を実行するときにも生成されたことを

ある
Query /*!40101 set @@character_set_database=binary */ 

唯一の違いは、その後FILEコマンドでLOAD DATAは、生成されました。

は、とにかく、私は

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 

、UTF8に設定された文字を設定しようとしたが、無駄に、同じエラーが起こりました。

だから、この文字セットの問題を解決するためにしてくださいどのように任意の手掛かり?

答えて

0

は、あなたの文字セットの設定を確認してください: https://bugs.mysql.com/bug.php?id=29712

可能な解決策:

  1. SET NAMES utf8;を試してみてください

    show variables like ‘%char%';

    --default-character-setに応答していないことは、まだmysqlimportはのバグかもしれませんインポート

  2. --default-character-set=utf8ではなく、mysqlimport
  3. mysqlを使用してみてください、あなたのmy.cnfを変更:上記の提案の
[mysqld] 
init-connect='SET NAMES utf8' 
character-set-server=utf8 
collation-server=utf8_general_ci 
default-character-set=utf8 

[client] 
default-character-set=utf8 
+0

どれも私のために働いていません。 MYSQLのバージョン5以降では、デフォルトの文字セットを使用しないように異なる値を使用する必要があることに注意してください。ここでは例:http://outofcontrol.ca/blog/comments/change-mysql-5.5-default-character-set-to-utf8 –

+0

'働くことmysql'should使用。 'my.cnf'に関しては、' init-connect'と 'default-character-set'はもはや' [mysqld] 'セクションに属していないようです。 –

関連する問題