2016-12-19 33 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的具有轉動的錯誤數據庫格式化爲latin1 UTF8

的這一翻譯

爲了糾正這一點,你必須去在/etc/my.cnf 刪除的

default-character-set=utf8 

發現標題爲「mysqld的」所有實例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"; 

重要:備份數據庫

如果您有數據庫的備份工作,你可以把它從你的電流轉換

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 

而在提示:

通過發出以下命令編碼UTF-

現在你應該可以使用UTF-8導出和使用UTF-8編碼導入到沙發上......

希望幫助...