|
кодировка SQL_ASCII для русских букв
|
|||
---|---|---|---|
#18+
Нужно перенести базу данных на новый сервер Создаю БД Postgres через панель vestacp Ставиться PostgreSQL 9.2.24 Кодировка по умолчанию встает SQL_ASCII Collation С Character Type С На старом сервере было UTF8 ru_RU.UTF-8 ru_RU.UTF-8 Сделал экспорт всей базы и структуры со старого сервера в формате sql и потом восстановил бекап на новом все русские буквы остались, делаю новые записи в бд с русским все ок. Какие проблемы могут быть с кодировкой SQL_ASCII если работаю с русскими буквами ? Или может SQL_ASCII какая то универсальная кодировка ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 14:58 |
|
кодировка SQL_ASCII для русских букв
|
|||
---|---|---|---|
#18+
trom, SQL_ASCII это 7-битная кодировка ничего не знающая про кириллицу. Поэтому проблема с ней простая - с русскими буквами она не работает. Что такое vestacp не знаю, но нужно заново инициализировать БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 16:21 |
|
кодировка SQL_ASCII для русских букв
|
|||
---|---|---|---|
#18+
Павел Лузанов, А почему русские буквы из БД при кодировке SQL_ASCII отображаются нормально ? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 18:16 |
|
кодировка SQL_ASCII для русских букв
|
|||
---|---|---|---|
#18+
trom, Согласно документации : "Поведение кодировки SQL_ASCII существенно отличается от других. Когда набором символов сервера является SQL_ASCII, сервер интерпретирует значения от 0 до 127 байт согласно кодировке ASCII, тогда как значения от 128 до 255 воспринимаются как незначимые. Перекодировка не будет выполнена при выборе SQL_ASCII. Таким образом, этот вариант является не столько объявлением того, что используется определённая кодировка, сколько объявлением того, что кодировка игнорируется. В большинстве случаев, если вы работаете с любыми данными, отличными от ASCII, не стоит использовать SQL_ASCII, так как PostgreSQL не сможет преобразовать или проверить символы, отличные от ASCII. " Т.е. получается, что если клиенты, работающие в разных кодировках кириллицы(win1251, koi8r, iso8859p5 и пр), захотят работать с вашей бд, то для них не будет выполняться перекодировка символов. Кроме того, что показывает вот такой запрос? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 21:13 |
|
кодировка SQL_ASCII для русских букв
|
|||
---|---|---|---|
#18+
Павел Лузанов, БД с SQL_ASCII показывает upper абвгдеёжз то есть без изменений ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 21:58 |
|
кодировка SQL_ASCII для русских букв
|
|||
---|---|---|---|
#18+
trom, Это из-за lc_ctype=C. Не понимает "оно" где маленькие буквы, где большие. А поскольку lc_collate тоже 'С', то еще сортировка русских букв может быть не верной. А выбранная кодировка не дает возможности перекодировать символы между разными кодировками. Не вижу причин это терпеть. Создавайте как и на старом сервере: ru_RU.UTF8 ... |
|||
:
Нравится:
Не нравится:
|
|||
30.10.2018, 22:12 |
|
кодировка SQL_ASCII для русских букв
|
|||
---|---|---|---|
#18+
Павел Лузанов, старый сервер ставил года два назад не помню как я это решал нашел в инете sudo -u postgres psql postgres=# UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1'; postgres=# DROP DATABASE Template1; postgres=# CREATE DATABASE template1 WITH owner=postgres ENCODING = 'UTF-8' lc_collate = 'ru_RU.UTF-8' lc_ctype = 'ru_RU.UTF-8' template template0; postgres=# UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1'; вроде на новых базах по дефолту теперь русская кодировка, но на старой базе у меня на всех базах даже дефолтных типо admin_db и postgres стояла русская как это сделать ? и нужно ли ? могут быть какие то проблемы если рабочие базы имеют UTF-8 а дефолтные SQL_ASCII ? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2018, 01:17 |
|
кодировка SQL_ASCII для русских букв
|
|||
---|---|---|---|
#18+
tromстарый сервер ставил года два назад не помню как я это решал initdb --help ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2018, 09:50 |
|
кодировка SQL_ASCII для русских букв
|
|||
---|---|---|---|
#18+
trom, Я бы полностью переустановил PostgreSQL. Причем начал бы разбираться почему ставится версия 9.2, которая уже не поддерживается. В настоящий момент нужно ставить 10, ну хотя бы 9.6. Меньше нет смысла. Как уже подсказали, инициализация кластера (первичное создание баз данных) выполняется утилитой initdb. Нужно, чтобы во время её запуска в окружении пользователя ОС была русская локаль (или использовать ключи утилиты для явного задания). Оставлять как есть - часть баз C.SQL_ANSII, а часть ru_RU.UTF8 - выглядит неаккуратно, даже если проблем не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.10.2018, 11:37 |
|
|
start [/forum/topic.php?fid=53&gotonew=1&tid=1995520]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
11ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 158ms |
0 / 0 |