2016-12-19 6 views
0

私は使用しているデータベースが異なっています。異なる言語のサポートがありますが、実行している問題はソースSQLデータで正しいです。Couch-DBにインポートすると、エンコードが変更されます

MariaDB [stmtransit]> SELECT * FROM routes WHERE route_id = 181; 
+----------+-----------+------------------+------------------+------------+------------+------------------------------------------+-------------+------------------+ 
| route_id | agency_id | route_short_name | route_long_name | route_desc | route_type | route_url        | route_color | route_text_color | 
+----------+-----------+------------------+------------------+------------+------------+------------------------------------------+-------------+------------------+ 
|  181 |   1 | 369    | Côte-des-Neiges | NULL  |   3 | http://www.stm.info/fr/infos/reseaux/bus | 009EE0  | NULL    | 
+----------+-----------+------------------+------------------+------------+------------+------------------------------------------+-------------+------------------+ 
1 row in set (0.00 sec) 

私はクエリを実行し、CouchDBの中にそれを移動する移動すると、それは

Côte-des-Neiges 
にアクセント、プレーン文字以外を変更マイリクエストは

function queryRouteTable(db, route_id) { 
return db.query({ 
    sql: "SELECT * FROM routes WHERE route_id = ?;", 
    values: [route_id], 
}) 
.take(1); 
} 

にそれから私のアップロードですソファはコードでrxとrx-couchを使用していますが、最初のグラブの後でdocument.route_long_nameがどこにあっても、常に形式が正しくありません。

私は何が不足していますか、なぜ初期のグラブ後に変わるのですか?

+0

元データがUTF-8ではないようです。それは可能ですか? –

+0

@JanLehnardtですが、私はUTF8からそれを変更し、UTF8MB4を試しました –

答えて

0

はMariaDBが変わるバグを持ってい判明このためにあなたが がで

default-character-set=utf8 

検索タイトル「のmysqld」のすべてのインスタンスを削除な/etc/my.cnfに行く必要があります修正するにはintead UTF8

のlatin1のためのデータベースの整形my.cnfの下に置いて

init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8' 
character-set-server=utf8 
collation-server=utf8_unicode_ci 
skip-character-set-client-handshake 

保存します。

次に、mariadbを再起動します。

0

特定のデータベースの現在の文字エンコードセットを表示するには、mysql>プロンプトで次のコマンドを入力します。 DBNAMEをデータベース名に置き換えます。

SELECT default_character_set_name FROM information_schema.SCHEMATA S WHERE schema_name = "DBNAME"; 

テーブルごとにエンコードを設定する場合は、次のコマンドを使用します。テーブルの名前とデータベース名を持つDBNAME、およびTABLENAMEを交換してください:

SELECT CCSA.character_set_name FROM information_schema.`TABLES` T,information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA WHERE CCSA.collation_name = T.table_collation AND T.table_schema = "DBNAME" AND T.table_name = "TABLENAME"; 

重要:BACKUP YOUR DATABASE

あなたのデータベースの作業バックアップがある場合、あなたはあなたの現在からそれを変換することができます次のコマンドを発行して、UTF-8へのエンコード:

mysql --database=DBNAME -B -N -e "SHOW TABLES" | awk '{print "SET foreign_key_checks = 0; ALTER TABLE", $1, "CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci; SET foreign_key_checks = 1; "}' | mysql --database=DBNAME 

そしてプロンプトで:

ALTER DATABASE DBNAME CHARACTER SET utf8 COLLATE utf8_general_ci; 

今、あなたはUTF-8エンコーディングを使用してソファにUTF-8およびインポートを使用してエクスポートすることができるはず...

役立ちます希望は...

関連する問題