2016-03-23 24 views
4

Uzun zamandır sorunsuz bir şekilde mysqlimport kullanıyorum, şimdi mysql 5.7 json veri türü desteği ekledim, mysqlimport'u satır içeren satırlarla kullanmaya çalışıyorum json verileri. Son sütun tipi json olduğunumysqlimport issue "set @@ character_set_database = binary" json değerlerinin yüklenmesini engeller

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

Uyarı: Burada

bir mysqlimport kullanarak ithal edilecektir csv dosyasında satır bir örnektir. Şimdi aşağıdaki gibi mysqlimport kullanırken: yerine mysqlimport sorunsuz çalıştı oluşturulan LOAD DATA IN FILE kullanarak Ancak Cannot create a JSON value from a string with CHARACTER SET 'binary'., when using table: products

:

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

aşağıdaki hata var! Mysql logunu açtım ve mysqlimport'u çalıştırırken oluşturulan LOAD DATA IN FILE komutunu kontrol ettim, daha sonra kopyalayıp yapıştırdım ve sorunsuz çalıştı!

Bir şey gibi koştum ve işe yaradı! Tek fark mysqlimport çalıştırırken o çizgi sorunun kaynağı bu yüzden günlüğüne, bu hat, aynı zamanda Sonra DOSYA komutu YÜK VERİ oluşturulduğu

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

oluşturulan olmasıdır.

Neyse ben

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 

ama nafile

utf8 karakter kümesini ayarlama çalıştı, aynı hata oldu.

Bu karakter seti sorununun nasıl çözüleceğine dair herhangi bir ipucu lütfen?

cevap

0

karakter kümesi yapılandırmasını kontrol edin: https://bugs.mysql.com/bug.php?id=29712

Olası Çözümler:

  1. önce SET NAMES utf8; deneyin

    show variables like ‘%char%';

    --default-character-set yanıt hala mysqlimport bir hata olabilir Değil içe aktarma

  2. Alter --default-character-set=utf8 yerine
  3. mysqlimport ait olan mysql kullanmayı deneyin senin my.cnf: Yukarıdaki önerilerin
[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

Yok benim için çalıştı. MYSQL 5 veya daha yeni sürümlerinde, varsayılan karakter kümesini kabul etmedikçe ayarlamak için farklı değerler kullanmanız gerektiğini unutmayın. Buradaki örnekler: http://outofcontrol.ca/blog/comments/change-mysql-5.5-default-character-set-to-utf8 –

+0

'mysql'nin kullanılması çalışmalıdır. 'My.cnf' gelince, 'init-connect' ve 'default-character-set 'artık' [mysqld] 'bölümüne ait görünmüyor. –