@pgsql

Страница 68 из 1062
Phil
09.08.2016
21:38:09
Посоветуйте как въехать быстро в PostgreSQL тому, кто шарит в MySQL. Может видяшки какие вводные есть, которые показывают различие?
Просто так въезжать в Postgres не хочешь ты. Знать зачем ты хочешь. Знание это освободит тебя от видяшек

Посоветуйте как въехать быстро в PostgreSQL тому, кто шарит в MySQL. Может видяшки какие вводные есть, которые показывают различие?
Некоторых вещей в Postgres просто нет. И не будет скорее всего. Это верно и для обратной миграции - в MySQL некоторых вещей нет и не будет. Синтаксис разный. Поведение разное. Считай что новую базу осваиваешь. Рекомендкую прочесть раздел 17 официальной доки до того как начнешь вообще трогать. Там пахнет нафталином и многие вещи троганием вообще не достигаются

Макс
09.08.2016
21:43:04
Ну, концепции-то одинаковые, так или иначе. )

Понятно, что синтаксис немного отличается, есть какие-то свои фичи и все такое. Но с нуля мне это точно не нужно, вроде как. ) Но я нашел одну видяшку, которая вроде отвечает на мой вопрос, буду смотреть. Спасибо за отсылку на раздел доки, обязательно загляну в него :)

Google
Phil
09.08.2016
21:45:35
Понятно, что синтаксис немного отличается, есть какие-то свои фичи и все такое. Но с нуля мне это точно не нужно, вроде как. ) Но я нашел одну видяшку, которая вроде отвечает на мой вопрос, буду смотреть. Спасибо за отсылку на раздел доки, обязательно загляну в него :)
Собственно проблема, что концепция у них ваще разная. И синтаксис не немного, а ваще различается. И работает немного по другому. И паттерны настройки так прямо скажем ортогональные. Они вообще всё по разному делают

Макс
09.08.2016
21:49:32
Я о том, что это как ни крути, а все равно реляционная база данных. Синтаксис - это мелочи. А вот с архитектурой нужно разобраться

Pavel
09.08.2016
21:56:08
Да можешь впринципе прямо сюда вопросы задавать

Первое на что я например напоролся когда переходил с мискл - это то что таймстампы в постгре содержат десятитысячные доли секунды)

Чтобы было по нормальному, надо объявлять как timestamp(0)

Вот на таких мелочах спотыкаешься обычно

А то что все разное - это видимо мнение админа. Мне как разработчику показалось все весьма одинаковым.

Макс
09.08.2016
22:02:47
Вот на таких мелочах спотыкаешься обычно
Спасибо Павел. Я тоже скорее взгляд разработчика имею. Концепции-то все равно знакомые. Буду завтра усиленно углубляться в эту тему )

Phil
09.08.2016
22:06:29
А то что все разное - это видимо мнение админа. Мне как разработчику показалось все весьма одинаковым.
Хм, а другое экранирование, другая работа с кодировками (только сегодя мозг всем тут вынес же), другая реакция на селекты, другие констрейны, другие инсерты и апдейты (сходи, найди мне REPLACE), другие транзакции, другие вьюхи - это как бы не? Ты там key valuse что ли держишь? Зачем переходил-то? :)

И функции все другие - я с работой с датами чуть голову не сломал

И дататайпы вообще другие - начиная от таймстампа, заканчивая децималами и немного не такими чарами

Pavel
09.08.2016
22:08:22
Экранирование другое - это что-то из разряда сложнопреодолимых барьеров?

Google
Phil
09.08.2016
22:09:17
Да. Я например не везде готов взять и переписать все запросы. Более того, я опять забыл как там экраниуется, сходу даже не скажу и полезу опять искать где читал про это в следующий раз

Pavel
09.08.2016
22:10:19
Если не работаешь постоянно то это нормально, а если работаешь то полюбому через некоторое время само в голову влезет.

Я ничего не переписывал, начинал новые проектики делать. Работу с кодировками вообще перестал замечать, как и работу с датами

Phil
09.08.2016
22:12:28
Да я про работу с кодировками уже всё ппонял. Тут 99% участников даже не задумывались над этим никогда

Pavel
09.08.2016
22:13:06
Ну реально же не было необходимости, все само работает ;)

А то что там надо отсортировать - так это в крайнем случае выносится на програмный уровень, кмк

Phil
09.08.2016
22:16:28
А то что там надо отсортировать - так это в крайнем случае выносится на програмный уровень, кмк
Это ты SELECT ... ORDER BY ... LIMIT 0,10 на программный уровень выносить собрался?

Pavel
09.08.2016
22:17:13
Да, получаешь список данных и сортируешь как угодно для вывода пользователю

А, с лимитом конечно не прокатит ;)

https://www.postgresql.org/docs/9.5/static/collation.html а вот это все не подходит?

Phil
09.08.2016
22:23:02
google UCA

Pavel
09.08.2016
22:33:58
Что-то мне кажется что решение проблемы есть. Если чуть дольше поискать..

Phil
09.08.2016
22:35:11
искаропки нет. пока единственное что есть - модуль для 9.3 который надо вкомпилировать

Pavel
10.08.2016
17:01:05
Я тут подумал, может быть это и правильно что пг опирается на системную локаль? Все таки операционная среда - это то что должно предоставлять как можно больше средств для обработки информации

А то получается что пг отсортирует по своей локали, другие программы по каким-то своим. Бардак получается.

Аггей
10.08.2016
17:06:10
В документации сказано, что если локаль не соответствует набору хранимых символов, будут проблемы с сортировкой, индексами, функциями upper() и lower(). Буквально сегодня столкнулся с тем, что в кластере во всех параметрах lc_ указано US_en.UTF8, но ни одной из выше перечисленных проблем с кириллическими строками не воспроизводится

Что я делаю не так?

Pavel
10.08.2016
17:07:20
Там проблемы со смесью кириллических и национальных строк

(насколько я понял)

Google
Pavel
10.08.2016
17:08:21
угу. а притом что системные локали они разные у систем - получается полный ахтунг
А они разве разные? Может быть разный набор, но юникод символы то одни и те же

Alexey
10.08.2016
17:08:43
Символы — одни, наборы — нет.

Alexey
10.08.2016
17:11:35
Для сортировок-то не влияет? Ага, щас.

Phil
10.08.2016
17:11:59
А они разве разные? Может быть разный набор, но юникод символы то одни и те же
правила сортировок разные. у fbsd, osx и linux совсем разные

Для сортировок-то не влияет? Ага, щас.
но это не набор символов, а алгоритм сортировки

Pavel
10.08.2016
17:16:46
Very interesting

Phil
10.08.2016
17:18:11
ну это google libc UCA

google osX UCA locale

Phil
10.08.2016
17:18:25
ну и так далее

даже гуглится что sort в linux и OSX по-разному отдаёт

эээээ

вот, в официальном PG нет локалей

Это про Docker

Алексей
10.08.2016
17:48:23
Фил, а как надо то ?

я не понимаю грубину проблемы

у меня плохо будут сортироваться данные при не правильной локали ?

Google
Алексей
10.08.2016
17:49:45
проблема только с сортировкой или еще всякими "a" in str

Макс
10.08.2016
17:55:01
давайте придумаем как локаль поменять )) У меня что-то не получается с налета

Admin
ERROR: S client not available

Phil
10.08.2016
17:56:34
у меня плохо будут сортироваться данные при не правильной локали ?
А я не уверен в поведении PG при заданной одной локали и отсутсвии оной в системе

Макс
10.08.2016
18:02:03
Для генерации локали можно использовать: dpkg-reconfigure locales Но там диалог, в котором нужно выбрать нужную локаль для генерации. Это не подходит для докера, естественно. Задать значение генерируемой локали нельзя, похоже (

Maxim
10.08.2016
18:03:05
locale-gen --lang ru

ixpict
10.08.2016
18:03:08
localedef -i ru_RU -f UTF-8 ru_RU.UTF-8 ?

Макс
10.08.2016
18:05:35
locale-gen --lang ru
Отлично! Это оно, спасибо ) Осталось локаль установить

Maxim
10.08.2016
18:06:32
export LANG=ru_RU.UTF-8 ?

Макс
10.08.2016
18:07:41
export LANG=ru_RU.UTF-8 ?
Вау, тезка, все работает! Спасибо огромное!! ))

Maxim
10.08.2016
18:07:48
и я бы еще добавил export LC_MESSAGES=C хуже нету, чем когда сообщения об ошибках начинают не на аглицком валиться

особенно когда их нагуглить пытаешься ;)

Макс
10.08.2016
18:08:31
это точно

Запишу в Gist ))

Но вот затем PG валится... печально

LOG: invalid value for parameter "lc_messages": "en_US.utf8"

Maxim
10.08.2016
18:58:54
потому что должно быть "C"

Макс
10.08.2016
19:00:39
так оно же и есть C после export LC_MESSAGES=C

D
10.08.2016
19:03:15
en_US.UTF-8

Макс
10.08.2016
19:03:33
без смены локали все работает как раз

Google
Макс
10.08.2016
19:06:19
а, нет, этот момент пройден, просто команда одна не применилась... Но едем дальше ))

The files belonging to this database system will be owned by user "postgres". This user must also own the server process. initdb: invalid locale settings; check LANG and LC_* environment variables

Короче, разобрался. Нужно еще установить LC_CTYPE и LC_ALL. Если они пустые, то PG не запускается.

Maxim
10.08.2016
19:48:05
?

Аггей
10.08.2016
19:59:30
LC_ALL вроде не нужен

LC_Collate и lc_ctype

Макс
10.08.2016
20:02:37
да, если поставить LC_ALL, то там все параметры перезадаются

LC_ALL вроде не нужен
Чудеса какие-то, но реально если LC_ALL пустой, то PG падает

Может там еще какой-то скрытый параметр есть, который наследуется от LC_ALL?

Maxim
10.08.2016
20:23:11
ну выстави сначала LC_ALL, а потом перегрузи LC_MESSAGES

Макс
10.08.2016
20:34:30
ну выстави сначала LC_ALL, а потом перегрузи LC_MESSAGES
Не дает, если LC_ALL стоит ru_RU.UTF-8, то все параметры тоже выставляются так.

фигня какая-то ?

Страница 68 из 1062