2016-12-19 2 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); 
} 

Тогда моя загрузка на couch использует rx и rx-couch с кодом, и независимо от того, где я просматриваю document.route_long_name после первоначального захвата, он всегда отформатирован неправильно.

Что мне не хватает, почему это происходит после первоначального захвата.

+0

Похоже, что данные вашего происхождения не указаны в UTF-8. Это возможно? –

+0

@JanLehnardt это, я изменил его с UTF8 и даже пытался UTF8MB4 –

ответ

0

Оказывается MariaDB есть ошибка, которая превращает верстка базы данных latin1 Intead из utf8

чтобы исправить это, вы должны пойти в /etc/my.cnf удалить все экземпляры

default-character-set=utf8 

находит титул «туздО» в 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 ВАША БАЗА ДАННЫХ

Если у вас есть рабочая резервную копию базы данных вы можете преобразовать его из тока кодирование в 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 кодировки ...

Надежды, что помогает ...

Смежные вопросы